iT邦幫忙

0

SQL 合併欄位 並過濾重複資料

小弟剛接觸SQL 目前有些語法不太了解
目前有會議資料[CM] 跟 部門資料[PM]

寫法如下
SELECT CM.* ,PM.USERS FROM CM
inner JOIN PM
ON (CM.PROJ_NO like '%'+PM.PROJ_NO+'%')

效果如圖片中語法下方的表格,請問要如何達到預期效果那樣?
https://ithelp.ithome.com.tw/upload/images/20180920/201118355E04iwA2Vb.png

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

4
純真的人
iT邦大師 1 級 ‧ 2018-09-20 15:01:40
最佳解答

你看看有什麼問題吧~@@

declare @CM table(
	CONF_NO varchar(3)
	,PROJ_NO varchar(50)
	,Dates date
	,Locations nvarchar(50)
)
insert into @CM
values('001','A','2018/10/1','南投')
,('002','A','2018/10/2','南投')
,('003','A,B','2018/10/3','新竹')
,('004','A','2018/10/4','台中')

declare @PM table(
	PROJ_NO varchar(50)
	,Users nvarchar(50)
)

insert into @PM
values('A','甲,乙,丙')
,('B','甲,丁')

declare @EM table(
	EM_Users nvarchar(50)
	,EM_Sort int
)
insert into @EM
values('甲',1)
,('乙',2)
,('丙',3)
,('丁',4)


select * 
,stuff((
	select ',' + EM_Users
	from @EM
	left join @PM as b on Charindex(',' + EM_Users + ',',',' + b.Users + ',') > 0
	where Charindex(',' + b.PROJ_NO + ',',',' + a.PROJ_NO + ',') > 0
	group by EM_Users,EM_Sort
	order by EM_Sort
	for xml path('')
),1,1,'') Users
from @CM as a

多增加一個存員工資料表來記錄吧~

https://ithelp.ithome.com.tw/upload/images/20180920/20061369ZdTLtMX2nI.png

0
paicheng0111
iT邦大師 5 級 ‧ 2018-09-20 15:02:46

建議把CM中的,CONF_NO = 003的PROJ_NO由A,B改為C
再在PM中新增 INSERT INTO PM (PROJ_NO, USERS) VALUES ('C', '甲,乙,丙,丁');

然後就可以用

SELECT CM.*, PM.USERS
FROM CM LEFT JOIN PM ON CM.PROJ_NO = PM.PROJ_NO

就可以撈資料了。

我要發表回答

立即登入回答