Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中的按列分组_Sql_Sql Server - Fatal编程技术网

SQL中的按列分组

SQL中的按列分组,sql,sql-server,Sql,Sql Server,我有一个名为EmpTBL的Sql表,其中包含以下数据: ID Emp_ID Dept Role_ID Status 82 E00004 D1 3 1 82 E00004 D2 3 1 83 E00034 E2 1 1 84 E00043 G1 2 1 84 E00043 G2 2 1 84 E00043 G3

我有一个名为EmpTBL的Sql表,其中包含以下数据:

ID  Emp_ID  Dept    Role_ID Status  
82  E00004  D1       3        1        
82  E00004  D2       3        1
83  E00034  E2       1        1 
84  E00043  G1       2        1 
84  E00043  G2       2        1 
84  E00043  G3       2        1 
76  E01053  A1       1        1 
我需要编写一个查询,将Emp_ID和Dept显示为

试试这个:

SELECT ID, Emp_ID, Dept = STUFF((SELECT ', ' + Dept 
  FROM EmpTBL AS e2
   WHERE e2.Emp_ID = e1.Emp_ID 
   ORDER BY Dept
   FOR XML PATH('')), 1, 1, ''), Role_ID, Status
FROM EmpTBL AS e1
GROUP BY Emp_ID
ORDER BY Emp_ID
试试这个:

SELECT ID, Emp_ID, Dept = STUFF((SELECT ', ' + Dept 
  FROM EmpTBL AS e2
   WHERE e2.Emp_ID = e1.Emp_ID 
   ORDER BY Dept
   FOR XML PATH('')), 1, 1, ''), Role_ID, Status
FROM EmpTBL AS e1
GROUP BY Emp_ID
ORDER BY Emp_ID

不在SQL Server中不在SQL Server中选择ID,Emp_ID,Dept=STUFFSELECT',并将Dept从EmployeeNew作为e2,其中e2.Emp_ID=e1.Emp_ID按部门排序用于XML路径,1,1,来自EmployeeNew作为e1组按Emp_ID,ID,Role_ID按Emp_StuffId排序,Emp_ID,Dept=Select','+Dept FROM EmployeeNew AS e2,其中e2.Emp_ID=e1.Emp_ID按部门排序用于XML路径,1,1,Role_ID FROM EmployeeNew AS e1组按Emp_ID,ID,Role_ID按Emp_ID排序
    CREATE TABLE #EmpTbl(ID INT, Emp_ID VARCHAR(100), Dept VARCHAR(100),Role_ID INT, Status INT)

    INSERT INTO  #EmpTbl(ID , Emp_ID , Dept ,Role_ID , Status )
    SELECT 82,'E00004','D1',3,1 UNION ALL         
    SELECT 82,'E00004','D2',3,1 UNION ALL 
    SELECT 83,'E00034','E2',1,1 UNION ALL  
    SELECT 84,'E00043','G1',2,1 UNION ALL  
    SELECT 84,'E00043','G2',2,1 UNION ALL  
    SELECT 84,'E00043','G3',2,1 UNION ALL  
    SELECT 76,'E01053','A1',1,1 

    SELECT DISTINCT T1.ID,T1.Emp_ID,A.Dept,T1.Role_ID,T1.Status
    FROM #EmpTbl T1
    JOIN
    (
    SELECT Emp_ID ,STUFF((SELECT ',' + Dept FROM #EmpTbl T3 WHERE T3.Emp_ID = T2.Emp_ID 
    FOR XML PATH('')),1,1,'') Dept
    FROM #EmpTbl T2
    GROUP BY Emp_ID 
    ) A ON A.Emp_ID = T1.Emp_ID'