Ich habe versucht, die Suche aber es fehlt wahrscheinlich die Sprache eine ähnliche Position zu finden, also hier ist mein Grundproblem
(SQL Server 2016
) ...One zu viele beitreten zu schaffen Duplikate trotz CASE-Anweisung
Ich habe eine Abfrage, die einzigartig identifiziert Kundenbegegnungen (1 line per 1 transaction
). Ich versuche dann, die Artikel einzuziehen, die der Kunde von einem anderen Tisch gekauft hat. Wenn sie mehrere Artikel gekauft haben, listet die Verknüpfungstabelle diese Transaktion mehrmals mit einem Feld namens "Zeile" auf, um eine Rangfolge dieser Artikel anzugeben.
Tabelle 2:
Transaction--Line--Item
1000--1--Staples
1000--2--Stapler
1001--1--Paper
Ich mag das Endergebnis in meiner Anfrage sein: Tabelle 1:
Customer--Transaction--Item1--Item2
John Doe--1000--Staples--Stapler
Jane Smith--1001--Paper--NULL
Ich bin derzeit versucht, dies zu tun mit einer CASE
Aussage in meinem SELECT
:
SELECT Table1.Customer,
Table1.Transaction,
CASE WHEN Table2.LINE = 1 THEN Table2.Item
ELSE NULL
END as Item1
CASE WHEN Table2.LINE = 2 THEN Table2.Item
ELSE NULL
END as Item2
FROM Table1 left outer join Table2 on Table1.transaction=Table2.transaction
Dies ergibt das richtige Ergebnis s, mit der Ausnahme, dass die eine zu vielen beitreten wird diese auf doppelte Zeilen
John Doe--1000--Staples--NULL
John Doe--1000--NULL--Stapler
Jane Smith--10001--Paper--NULL
platzieren mag ich John Doe
alle auf einer Zeile. Anders als zwei separate Update-Anweisungen nach der ersten Abfrage auszuführen, weiß ich nicht, wie ich das gewünschte Ergebnis erzielen kann. Hilfe?
(Entschuldigung für die miese Formatierung)
Danke für den Vorschlag. Das scheint nicht zu funktionieren, da die WHERE-Klausel nichts von der Suche ausschließt, die nicht Line = 1 ist. Ich sollte wahrscheinlich hinzufügen, dass ich eine viel kompliziertere Abfrage vereinfache. Es gibt mindestens 7 weitere linke Joins, aber dies ist die einzige, bei der ich eine einzige Transaktion für mehrere Ergebnisse habe. – DMC97
Ich denke, andere Option ist mit etwas wie unten gehen '(Wählen Sie Artikel aus Tabelle2 wo transaction = table.transaction und Line = 1) END als item1, (Wählen Sie Artikel aus Tabelle2, wo transaction = table.transaction und Line = 2) END als Punkt 2, ' –