Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.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_Tsql - Fatal编程技术网

Sql 连接两个表并连接单个字段的多行

Sql 连接两个表并连接单个字段的多行,sql,sql-server,tsql,Sql,Sql Server,Tsql,查询: 电流输出: CREATE TABLE #Temp1 (ID int) CREATE TABLE #Temp2 (ID int, Value varchar(10)) INSERT INTO #Temp1 (ID) SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 INSERT INTO #Temp2(ID, Value) SELECT 1,'One-One' UNION ALL SELECT 1,'One-Two' UNION ALL SE

查询:

电流输出:

CREATE TABLE #Temp1 (ID int)
CREATE TABLE #Temp2 (ID int, Value varchar(10))

INSERT INTO #Temp1 (ID)
SELECT 1
UNION ALL
SELECT 2
UNION ALL
SELECT 3

INSERT INTO #Temp2(ID, Value)
SELECT 1,'One-One'
UNION ALL
SELECT 1,'One-Two'
UNION ALL
SELECT 1,'One-One'
UNION ALL
SELECT 2,'Two-One'
UNION ALL
SELECT 2,'Two-Two'
UNION ALL
SELECT 2,'Two-One'

SELECT T1.ID, T2.Value FROM #Temp1 T1 INNER JOIN #Temp2 T2 ON T1.ID = T2.ID

DROP TABLE #Temp1
DROP TABLE #Temp2
期望输出:

ID  Value
1   One-One
1   One-Two
1   One-One
2   Two-One
2   Two-Two
2   Two-One
我想在键列ID上连接两个表#Table1和#table2,并从第二个表中获取值字段。。。但是在一行中(如所需输出所示)

如何(如果可能)实现所需的输出

多谢各位

ID  Values
1,  One-One, One-Two, One-One
2,  Two-One, Two-Two, Two-One
适用于SQL Server 2017及更高版本

SELECT T1.ID,
      STUFF((SELECT ', ' + T2.Value
             FROM   #Temp2 T2 
             WHERE  T1.ID = T2.ID
             FOR XML PATH(''),TYPE)
             .value('.','NVARCHAR(MAX)'),1,2,'') AS Value
FROM #Temp1 T1 
GROUP BY T1.ID
结果集

SELECT T1.ID, STRING_AGG(T2.Value , ', ') AS [Value]
FROM #Temp1 T1 
INNER JOIN #Temp2 T2 ON T1.ID = T2.ID
GROUP BY T1.ID
试试这个:

╔════╦═══════════════════════════╗
║ ID ║           Value           ║
╠════╬═══════════════════════════╣
║  1 ║ One-One, One-Two, One-One ║
║  2 ║ Two-One, Two-Two, Two-One ║
╚════╩═══════════════════════════╝

我们得到了这么多这样的复制品:thx作为参考。下次,我将使用不同的关键字/字符串进行搜索。干杯谢谢哈姆雷特为我们展示了另一种方式。如果另一种方法因某种原因不起作用,它将保持方便。干杯
SELECT Id, STUFF(A.Value, 1, 2, '') [Values] FROM #Temp1 T1
CROSS APPLY 
(
   SELECT ', ' + Value FROM #Temp2 T2 WHERE T1.ID = T2.ID FOR XML PATH('')
) A(Value)
WHERE A.Value IS NOT NULL