我有一個看起來像以下family_expenses表:CASE WHEN ROWNUM()返回行
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
上面的表格有一些其他的幾列。
我需要做的是獲取家族ID的所有記錄,並將其與另一個表中的另一個子查詢結合使用。我使用CASE WHEN做了一些查詢。
我的查詢是如下:
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
結果顯示2行的記錄。
bank_code1 amt1 bank_code2 amt2 bank_code3 amt3
LB 130.00
MB 200.00
如何使輸出顯示所有列顯示結果在單個行中?
預期輸出:
bank_code1 amt1 bank_code2 amt2 bank_code3 amt3
LB 130.00 MB 200.00
使用' MAX(CASE ...)'?另外,IMO應該省略這些case語句的ELSE部分(使結果爲NULL而不是空格/ 0.00),儘管這取決於你。 – ZLK
我試圖使用MAX(CASE ...),並按照您的建議捨棄ELSE,但它仍然返回2行。 – hotseetotsee
嗯,我猜這不是整個查詢呢?你會得到多行的唯一原因是,如果你正在分組的東西,導致有多行。例如你不是按銀行代碼分組的,對嗎? – ZLK