返回列表 上一主題 發帖

[發問] SQL 如何LEFT JOIN 同一個TABLE 不同條件?

[發問] SQL 如何LEFT JOIN 同一個TABLE 不同條件?

各位大大好,想請教如何下SQL 語法的問題
A表:
ID,姓名
1,邱先生
2,黃先生
3,陳先生

B表:
ID,金額,結清與否,日期
1,100,FALSE,2019/1/1
1,100,TRUE,2020/1/1
2,100,FALSE,2019/1/1
2,100,TRUE,2020/1/
3,100,FALSE,2019/1/1

預期結果
姓名(用ID比對),金額(不管結清與否,直接以id加總),日期(只抓取結清與否為TRUE的日期)
邱先生,200,2020/1/1
黃先生,200,2020/1/1
陳先生,100,NULL

請問這樣的預期結果要如何下語法?(主要是日期只抓取結清欄位為TRUE的日期,同時又要以ID相同的加總金額)
這兩個混在一起
不知道該如何下語法...
PKKO

各位大大好,想請教如何下SQL 語法的問題
A表:
ID,姓名
1,邱先生
2,黃先生
3,陳先生

B表:
ID,金額, ...
PKKO 發表於 2020-1-14 12:54


請看下面的連結

關鍵字  group by  sum()      left join   on     不會太難

https://www.1keydata.com/tw/sql/sqlgroupby.html
https://www.1keydata.com/tw/sql/sqlouterjoin.html

TOP

回復 2# joey0415


    感謝大大回復
sum 和 left join
這兩個功能我都會用

而此次發問的原因
是因為
有兩個條件

1.金額必須加總
2.日期必須只帶入有結清尾款的日期

而left join 若用id 相同,則日期會錯誤
若left join 若用id +結清尾款為true 則 金額會錯誤

所以想請教一下各位大大
PKKO

TOP

回復  joey0415


    感謝大大回復
sum 和 left join
這兩個功能我都會用

而此次發問的原因
是因 ...
PKKO 發表於 2020-1-14 17:09



    先 group by  和 sum()  再兩次  left join  (第一次先  id,第二次先將表二為true  select 後,再串接起來,同樣也是  id=id)

TOP

本帖最後由 jcchiang 於 2020-1-16 14:08 編輯

回復 1# PKKO

試試看
SELECT a.姓名,a.金額,b.日期
FROM (Select A.姓名,sum(b.金額) as 金額
from (a inner join B on a.ID=B.ID) group by A.姓名  ) as a
LEFT OUTER JOIN (select a.姓名,b.日期  
from a,b
where b.結清與否='True' and a.ID=b.ID  ) as b ON a.姓名=b.姓名

TOP

        靜思自在 : 有智慧才能分辨善惡邪正;有謙虛才能建立美滿人生。
返回列表 上一主題