有下表:MF_MO
SO_NO EST_MO DEP
1001 1 1
1001 1 2
1002 1 1
1002 2 3
另一表DEPT
DEP NAME
1 一車間
2 二車間
3 三車間
要求查詢結果顯示如下
SO_NO EST_MO NAME
1001 1 一車間,二車間
1002 1 一車間
1002 2 三車間
如何用函式實作查詢得到結果
uj5u.com熱心網友回復:
哪個版本的庫?2017 以上使用 string_agg, 之前的版本使用 for path 語法。
uj5u.com熱心網友回復:
2008版本的資料庫uj5u.com熱心網友回復:
SELECT * INTO MF_MO FROM (
SELECT '1001' SO_NO,1 EST_MO, 1 DEP UNION ALL
SELECT '1001' SO_NO,1 EST_MO, 2 DEP UNION ALL
SELECT '1002' SO_NO,1 EST_MO, 1 DEP UNION ALL
SELECT '1002' SO_NO,2 EST_MO, 3 DEP) AS A
SELECT * INTO DEPT FROM (
SELECT '一車間' NAME, 1 DEP UNION ALL
SELECT '二車間' NAME, 2 DEP UNION ALL
SELECT '三車間' NAME, 3 DEP)AS A
WITH CTE AS ( SELECT DISTINCT SO_NO,EST_MO FROM MF_MO)
SELECT *,STUFF((SELECT ','+NAME FROM DEPT A JOIN MF_MO B ON A.DEP=B.DEP WHERE B.SO_NO=CTE.SO_NO AND B.EST_MO=CTE.EST_MO FOR XML PATH('')),1,1,'')AS NAME FROM CTE
uj5u.com熱心網友回復:
CREATE FUNCTION [dbo].[f_strScSA_ScNo](@id int)RETURNS varchar(8000)
AS
BEGIN
DECLARE @r varchar(8000)
SET @r = ''
SELECT @r = @r + ',' + ScNo
FROM scSADtl
WHERE MFID=@id
GROUP BY ScNo
RETURN STUFF(@r, 1, 1, '')
END
GO
能不能按上方式寫一下?
uj5u.com熱心網友回復:
select t2.so_no,t2.est_mo,listagg(t2.name) within group(order by t2.so_no,t2.s.est_mo )
from (select a. so_no,a.est_mo,a.dep dep dep1,b.dep dep2,b.name from mf_mo a ,dep b where a.dep=b.dep ) t2
group by t2.so_no,t2.est_mo;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/43050.html
標籤:基礎類
上一篇:SSIS設定動態連接字串報錯
下一篇:資料庫
