台灣最大程式設計社群網站
線上人數
4532
 
會員總數:246136
討論主題:189720
歡迎您免費加入會員
討論區列表 >> VB.NET >> SQL 如何left join 相同欄位但不同條件的結果?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
SQL 如何left join 相同欄位但不同條件的結果?
價值 : 50 QP  點閱數:975 回應數:10
樓主

pkko
門外漢
0 30
612 66
發送站內信

EX:
select A.A1,B.A1,B.A1 from A LEFT JOIN B ON B.料號=A.料號

注意看會發現select 有兩個一樣的B.A1
第一個是要當B.A2=1的時候出現的B.A1
第二個是要當B.A2=2的時候出現的B.A1

這樣語法要怎麼寫呢= =?


搜尋相關Tags的文章: [ sql ] ,
本篇文章發表於2018-08-20 15:49
== 簽名檔 ==
努力!努力!再努力!!!
1樓
回應

小偉
捐贈 VP 給 小偉 檢舉此回應
兩個B.A1不是相同欄位嗎
怎會有第一個是要當B.A2=1的時候出現的B.A1
第二個是要當B.A2=2的時候出現的B.A1


本篇文章回覆於2018-08-20 17:19
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

pkko
檢舉此回應
應該是我描述不清楚,需求是這樣的

要有三個欄位
第一個欄位是A資料庫的column1欄位
第二個欄位是B資料庫的column1欄位(當B資料庫的column2=1的值)
第三個欄位是B資料庫的column1欄位(當B資料庫的column2=2的值)

B資料庫簡易欄位如下
column1,column2,料號
簡易資料如下
A,1,ABC1(料號相同,欄位1和欄位2不同)
B,2,ABC1(料號相同,欄位1和欄位2不同)
本篇文章回覆於2018-08-20 17:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

小魚
檢舉此回應

本篇文章回覆於2018-08-20 20:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

Bobby
檢舉此回應

本篇文章回覆於2018-08-20 22:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

pkko
檢舉此回應
謝謝兩位大大的回覆,小弟測試一下,感激不盡
本篇文章回覆於2018-08-24 11:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

pkko
檢舉此回應
感謝Bobby 大大以及 小魚 大大
本篇文章回覆於2018-08-29 13:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
作者回應

pkko
檢舉此回應
當我使用SUM 搭配 group by
然後

用方法1
left join 重點說明 as 品保說明 on 品保說明.料號=A.料號 and 品保說明.單位='品保'
left join 重點說明 as 生管說明 on 生管說明.料號=A.料號 and 生管說明.單位='品保'

方法2
"(case when 重點說明.單位='生管' then 重點說明.重點說明 else '' end) as 生管備註,(case when 重點說明.單位='品保' then 重點說明.重點說明 else '' end) as 品保備註,"

以上兩種方法都可以執行
但結果都會變成多筆資料
若只執行一個欄位則不會變多筆資料

多筆資料指的是,我原本以A資料庫為主,每個料號只有一筆資料
但現在會變成某些料號會出現多筆資料
請問該如何處理?
本篇文章回覆於2019-07-16 14:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
回應

小魚
檢舉此回應
你兩個條件不是一樣嗎?
那分成兩個有意義嗎?
本篇文章回覆於2019-07-16 22:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

pkko
檢舉此回應
我打錯 = = 更正一下
當我使用SUM 搭配 group by
然後

用方法1
left join 重點說明 as 品保說明 on 品保說明.料號=A.料號 and 品保說明.單位='品保'
left join 重點說明 as 生管說明 on 生管說明.料號=A.料號 and 生管說明.單位='生管'

方法2
"(case when 重點說明.單位='生管' then 重點說明.重點說明 else '' end) as 生管備註,(case when 重點說明.單位='品保' then 重點說明.重點說明 else '' end) as 品保備註,"

以上兩種方法都可以執行
但結果都會變成多筆資料
若只執行一個欄位則不會變多筆資料

多筆資料指的是,我原本以A資料庫為主,每個料號只有一筆資料
但現在會變成某些料號會出現多筆資料
請問該如何處理?
本篇文章回覆於2019-07-16 23:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

小魚
檢舉此回應
其實,
我還是蠻懷疑你這樣做到底是對不對...
也許你的方向一開始就是錯的...
本篇文章回覆於2019-07-17 08:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.