Re: [SQL ] 請問join後如何不顯示重複的資料
※ 引述《rookie (rookie)》之銘言:
: 您好
: 我使用的是MS SQL 2005
: 想請教二個SQL的問題,謝謝
: 1、顯示不重複的資料可以使用DISTINCT,
: 但如何找出資料重複的部份呢?
: 2、
: ASTMB TABLE
: MB001 資產編號
: MB002 資產名稱
: MB003 資產規格
: MB012 數量
: ASTMC table
: MC001 資產編號
: MC002 部門代號
: MC003 保管人
: CMSME table
: ME001 部門代號
: ME002 部門名稱
: CMSMV table
: MV001 員工代號
: MV002 姓名
: select MB001, MB002,MB003,MC.MC002,ME.ME002,MC.MC003,MB016
: from ASTMB MB LEFT JOIN ASTMC MC ON MB.MB001=MC.MC001
: LEFT JOIN CMSMV MV ON MC.MC003=MV.MV001
: LEFT JOIN CMSME ME ON MC.MC002=ME.ME001
: WHERE MB012>0
: 因同一資產數量若大於1,則有可能有多個不同的「保管人」
: 導致在ASTMB MB LEFT JOIN ASTMC MC ON MB.MB001=MC.MC001
: 時會同一資產會重複顯示?
: 我只想要讓資產編號出現一次,請問如何解決呢?謝謝
您好,我不會MS SQL,提供個想法來討論,我想MSSQL應該是做的出來的。
我在ORACLE上是可以辦到的。
(1)將您上述SQL依「資產編號」 GROUP BY 再產生另一欄位,並依
此進行群組內編號,如下例:
群組內編號 資產編號 資產名稱 部門代號 部門名稱 姓名 數量
1 P1 A D1 X I 2
2 P1 A D1 X J 2
3 P1 A D2 Y K 2
1 P2 B D1 X I 1
1 P3 C D1 X J 2
2 P3 C D3 Z L 2
1 P4 D D1 X I 2
2 P4 D D2 Y J 2
3 P4 D D3 Z L 2
(2)再依「群組內編號」欄位判斷「資產編號」與「資產名稱」是否呈現
IF 群組內編號 > 1 THEN 資產編號、資產名稱 設為 NULL
如下例:
群組內編號 資產編號 資產名稱 部門代號 部門名稱 姓名 數量
1 P1 A D1 X I 2
2 D1 X J 2
3 D2 Y K 2
1 P2 B D1 X I 1
1 P3 C D1 X J 2
2 D3 Z L 2
1 P4 D D1 X I 2
2 D2 Y J 2
3 D3 Z L 2
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.240.166.92
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 4 之 4 篇):