我有一個名為main的表:
t_pdno t_mitm
SFC093989 SLS005251ACL-3382012763-1
SFC093991 SLS005251ACL-3382012765-1
SFC093996 SLS005251ACL-3382014708-1
SFC093993 SLS005251ACL-3382014709-1
我有另一個名為brach的表:
t_mitm t_opno
SLS005251ACL-3382012763-1 10
SLS005251ACL-3382012763-1 20
SLS005251ACL-3382012763-1 30
SLS005251ACL-3382012763-1 40
SLS005251ACL-3382014708-1 50
SLS005251ACL-3382014708-1 80
SLS005251ACL-3382014708-1 30
SLS005251ACL-3382014708-1 40
你可以看到重復的欄位是t_mitm。Main.t_mitm是唯一的。但是對于每個t_mitm,在branch表中有多條記錄。
是否有可能從main中選擇所有的行,并顯示額外的列,稱為Options,以顯示每個t_mitm記錄的所有t_opno。換句話說,基于所提供的資料的最終結果應該是:
t_pdno t_mitm Options
SFC093989 SLS005251ACL-3382012763-1 10, 20,30, 40.
SFC093991 SLS005251ACL-3382012765-1
SFC093996 SLS005251ACL-3382014708-1 50, 80,30, 40.
SFC093993 SLS005251ACL-3382014709-1
我做了一個SQL-fiddle:
http://sqlfiddle.com/#!18/dd5661
uj5u.com熱心網友回復:
你必須使用join和group concat
。Select a.t_pdno, a.t_mitm, group_concat(b.t_opno)
from main a inner join branch b on a.t_mitm =b.t_mitm
group by a.t_mitm
由于我使用的是手機,如果有錯別字請糾正
。uj5u.com熱心網友回復:
如果資料庫是MS SQLServer,那么這就是你需要的查詢:
如果資料庫是MS SQLServer,那么這就是你需要的查詢。
select a.t_pdno, a.t_mitm, STRING_AGG (b.t_opno, ' , ')
from main a
left join branch b on a.t_mitm =b.t_mitm
group by a.t_pdno, a.t_mitm
你需要使用左鍵來獲取第一個表中的所有選項,即使它們在第二個表中沒有匹配的資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/320138.html
標籤:
上一篇:我怎樣才能從JSON中制作矩形?
