Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.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_Sql Server 2008 - Fatal编程技术网

Sql 在查询中合并两个表

Sql 在查询中合并两个表,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,SQL 2008数据库中有两个表,在运行查询时需要合并这两个列 表1我需要员工ID,员工姓名,员工家庭部,员工轮班 表2我需要Emply\u ID,Emply\u OtherDept,Emply\u AltShift 我要做的是生成一行,将HomeDept和OtherDept组合在一起,并将Shift和AltShift组合在一起。所以我会以 00124|John Doe|Loading,Packing,Shipping|Shift1,Shift2,Shift3 这应该符合您的期望: SELEC

SQL 2008数据库中有两个表,在运行查询时需要合并这两个列

表1我需要
员工ID
员工姓名
员工家庭部
员工轮班

表2我需要
Emply\u ID
Emply\u OtherDept
Emply\u AltShift

我要做的是生成一行,将
HomeDept
OtherDept
组合在一起,并将
Shift
AltShift
组合在一起。所以我会以

00124|John Doe|Loading,Packing,Shipping|Shift1,Shift2,Shift3

这应该符合您的期望:

SELECT t.EmplyId, 
       t.Emply_name, 
       CONCAT(t.Emply_HomeDept, ',' , x.otherDept) AS FullDept,
       CONCAT(t.Emply_Shift, ',' , x.AltShift) AS FullShift,
FROM
    Table1 t
    LEFT JOIN (
    SELECT t2.EmplyId,
           (SELECT t3.OtherDept + ',' AS [text()] 
            FROM table2 t3
            WHERE t3.EmplyId = t2.EmplyId
            FOR XML PATH ('')
           ) AS otherDept,
           (SELECT t4.AltShift + ',' AS [text()] 
            FROM table2 t4
            WHERE t4.EmplyId = t2.EmplyId
            FOR XML PATH ('')
           ) AS AltShift           
    FROM
        Table2 t2 ) x
    ON t.Emply_Id = x.EmplyId

有什么问题吗?