Ich habe dieses T-SQL (vereinfacht):T-SQL Kombinieren mehrerer Zeilen in einreihig
select 3.00 as score1, null as score2, null as score3, null as score4
union all
select null as score1, 4.5 as score2, 1.5 as score3, null as score4
Welche dies erzeugt:
score1 score2 score3 score4
------------------------------
3.00 NULL NULL NULL
NULL 4.5 1.5 NULL
Aber ich es in einer Reihe anschließen möchten, wie folgt:
Sorry - ich zeichne leer (es ist spät am Tag).
Benötige ich eine temporäre Tabelle?
Der Grund, warum ich das tue, ist, dass ich die folgende Assoziation haben:
Bewertungen 1 .. * Noten
So regelmäßig beitreten 1 Zeile für jeden Score erzeugt - aber ich möchte legen Sie einen Datensatz (in einer anderen Tabelle), die eine Spalte für jeden Datensatz hat - wenn Sie wissen, was ich meine:
INSERT INTO OtherTable (ReviewId, Score1, Score2, Score3, Score4)
????
Hoffnung, den Sinn macht.
EDIT
Basierend auf @OMG Ponies Antwort (die er nur entfernt), kam ich mit auf den Punkt:
SELECT CASE MAX(x.score1) WHEN 0 THEN NULL ELSE MAX(x.score1) END AS score4
CASE MAX(x.score2) WHEN 0 THEN NULL ELSE MAX(x.score2) END AS score4
CASE MAX(x.score3) WHEN 0 THEN NULL ELSE MAX(x.score3) END AS score4
CASE MAX(x.score4) WHEN 0 THEN NULL ELSE MAX(x.score4) END AS score4
FROM (select 3.00 as score1, 0 as score2, 0 as score3, 0 as score4
union all
select 0 as score1, 4.5 as score2, 1.5 as score3, 0 as score4) x
Aber es ist ziemlich hässlich. Irgendwelche anderen Ideen?
Das ist seltsam, denn ich dachte MAX Rückkehr NULL unterstützt, damit es nicht die gebraucht haben sollte FALL:/ –
ja schlimmsten Fall, ich habe eine Lösung oben. aber wie gesagt, es ist wirklich hässlich. Ich muss NULL (nicht 0) einfügen, weshalb ich den beschissenen Fall brauche. Eck. was noch wichtiger ist, ich brauche ISNULL's in das Subjekt (in Wirklichkeit), um NULL in 0 zu konvertieren, und wandle das dann wieder zurück in NULL für die Einfügung, lol. schmerzhaft – RPM1984