如果table a 單號資料是 i開頭,則table b的金額欄位,顥示table b的金額欄位為收入金額,支出金額是0。
如果table a 單號資料是 o開頭,則table b的金額欄位,顥示table b的金額欄位為支出金額,收入金額是0。
這個SQL指令要如何下?
希望呈現結果如下:
這道提問的疑點在,table a有單號,table b有金額,那請問table b有單號嗎?那不就直接from table b 做下面這件事就好了?如果table b沒有單號,那我從table a,怎會知道是要對應table b的哪個金額?
select
單號,
CASE WHEN LEFT(單號,1)='i' THEN 金額 ELSE 0 END 收入金額,
CASE WHEN LEFT(單號,1)='o' THEN 金額 ELSE 0 END 支出金額
from a
https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=521ba1e72bb6646aa0b0527d34c21fcb
--2019/2/23更新以下
回原po,就再包一層,這種要group by兩次。
select
單案號,
SUM(收入金額) 前期收入金額,
SUM(支出金額) 前期支出金額
from(
--原本外面再加一層
select a.專案號,a.單號,
CASE WHEN LEFT(a.單號,1)='I' THEN sum(b.金額) ELSE 0 END 收入金額,
CASE WHEN LEFT(a.單號,1)='O' THEN sum(b.金額) ELSE 0 END 支出金額
from a
left join b on a.單號=b.單號
group by a.專案號,a.單號
--原本外面再加一層
) y
group by 單案號
您好,
謝謝您的回覆.
用您的方式,SQL指令如下:
select a.專案號,a.單號,
CASE WHEN LEFT(a.單號,1)='I' THEN sum(b.金額) ELSE 0 END 收入金額,
CASE WHEN LEFT(a.單號,1)='O' THEN sum(b.金額) ELSE 0 END 支出金額
from a
left join b on a.單號=b.單號
group by a.專案號,a.單號
結果如下:
不好意思我沒描述清楚,我不想要出現單號,需要的是加總相同專案號的金額,希望結果如下:
原本的SQL包起來,外面再下一次sum & group by,已更新原回答。
謝謝 ^^