ich eine family_expenses Tabelle, die wie unten sah:CASE WHEN rownum() return Reihen
family_id bank_code amount year month
001 LB 130.00 2017 1
001 MB 200.00 2017 1
001 CB 78.00 2017 2
001 SB 69.00 2017 3
009 LB 78.00 2017 1
Die oben stehende Tabelle haben einige andere mehrere Spalten.
Was ich tun muss, ist, alle Datensätze für eine Familien-ID zu erhalten und sie mit meiner anderen Unterabfrage aus einer anderen Tabelle zu kombinieren. Ich habe eine Abfrage mit CASE WHEN gemacht.
Meine Frage ist, wie unten:
SELECT
(CASE WHEN t.rownum = 1 THEN t.bank_code ELSE '' END
) as bank_code1,
(CASE WHEN t.rownum = 1 THEN t.amount ELSE 0.00 END
) as amt1,
(CASE WHEN t.rownum = 2 THEN t.bank_code ELSE '' END
) as bank_code2,
(CASE WHEN t.rownum = 2 THEN t.amount ELSE 0.00 END
) as amt2,
(CASE WHEN t.rownum = 3 THEN t.bank_code ELSE '' END
) as bank_code3,
(CASE WHEN t.rownum = 3 THEN t.amount ELSE 0.00 END
) as amt3
FROM
(
select
ROW_NUMBER() OVER(partition by family_id Order by family_id, bank_code)
as rownum,
family_id, bank_code, AMOUNT
from family_expenses
where year = 2017 and month = 1
and family_id= 001
) t
Das Ergebnis Anzeige 2 Zeilen von Datensätzen.
Wie kann ich die Ausgabeanzeige alle Spalten zeigen Ergebnis in einer einzigen Zeile?
Erwartete Ausgabe:
bank_code1 amt1 bank_code2 amt2 bank_code3 amt3
LB 130.00 MB 200.00
Verwenden ' MAX (FALL ...) '? Auch IMO sollten Sie den 'ELSE'-Teil dieser Case-Anweisungen weglassen (die Ergebnisse werden zu 'NULL' anstelle von Leerzeichen/0.00), obwohl das liegt an Ihnen, denke ich. – ZLK
Ich habe versucht, MAX (CASE ...) zu verwenden und lasse die ELSE wie du vorgeschlagen zurück, aber es gibt immer noch 2 Zeilen zurück. – hotseetotsee
Äh, ich vermute, das ist dann nicht die ganze Frage? Der einzige Grund, warum Sie mehrere Zeilen erhalten, ist, wenn Sie nach etwas gruppieren, das mehrere Zeilen verursacht. z.B. Sie gruppieren sich nicht nach der Bankleitzahl, oder? – ZLK