在SQL Server中合并查询中的行
我希望合并给定子查询中的行。如果可能的话,我还希望将子查询保存在变量中。在不保留变量的情况下,由于存在多个结果,因此会出现错误在SQL Server中合并查询中的行,sql,sql-server,select,Sql,Sql Server,Select,我希望合并给定子查询中的行。如果可能的话,我还希望将子查询保存在变量中。在不保留变量的情况下,由于存在多个结果,因此会出现错误 DECLARE @myquery NVARCHAR(MAX); SET @myquery = (select cm.USER_ID from mytable cm where cm.USER_ID = 'A' or USER_ID = 'B' group by cm.US
DECLARE @myquery NVARCHAR(MAX);
SET @myquery = (select cm.USER_ID
from mytable cm
where cm.USER_ID = 'A' or USER_ID = 'B'
group by cm.USER_ID
having count(1) > 1);
select string_agg(cast(@myquery as NVARCHAR(MAX)) , ', ') as DuplicateList
from mytable cm
试试这个:
SELECT string_agg([user_id] , ', ')
FROM
(
select cm.USER_ID
from mytable cm
where cm.USER_ID = 'A' or USER_ID = 'B'
group by cm.USER_ID
having count(1) > 1
) DS ([user_id]);
DECLARE @myquery TABLE( USER_ID NVARCHAR( MAX ) );
INSERT @myquery SELECT cm.USER_ID
FROM mytable cm
WHERE cm.USER_ID = 'A' OR USER_ID = 'B'
GROUP BY cm.USER_ID
HAVING count(1) > 1;
SELECT string_agg( CAST(@myquery.USER_ID as NVARCHAR(MAX) ) , ', ' ) AS DuplicateList
FROM mytable cm
INNER JOIN @myquery mq
ON mq.USER_ID = cm.USER_ID
试试这个:
SELECT string_agg([user_id] , ', ')
FROM
(
select cm.USER_ID
from mytable cm
where cm.USER_ID = 'A' or USER_ID = 'B'
group by cm.USER_ID
having count(1) > 1
) DS ([user_id]);
DECLARE @myquery TABLE( USER_ID NVARCHAR( MAX ) );
INSERT @myquery SELECT cm.USER_ID
FROM mytable cm
WHERE cm.USER_ID = 'A' OR USER_ID = 'B'
GROUP BY cm.USER_ID
HAVING count(1) > 1;
SELECT string_agg( CAST(@myquery.USER_ID as NVARCHAR(MAX) ) , ', ' ) AS DuplicateList
FROM mytable cm
INNER JOIN @myquery mq
ON mq.USER_ID = cm.USER_ID
试试这个:
SELECT string_agg([user_id] , ', ')
FROM
(
select cm.USER_ID
from mytable cm
where cm.USER_ID = 'A' or USER_ID = 'B'
group by cm.USER_ID
having count(1) > 1
) DS ([user_id]);
DECLARE @myquery TABLE( USER_ID NVARCHAR( MAX ) );
INSERT @myquery SELECT cm.USER_ID
FROM mytable cm
WHERE cm.USER_ID = 'A' OR USER_ID = 'B'
GROUP BY cm.USER_ID
HAVING count(1) > 1;
SELECT string_agg( CAST(@myquery.USER_ID as NVARCHAR(MAX) ) , ', ' ) AS DuplicateList
FROM mytable cm
INNER JOIN @myquery mq
ON mq.USER_ID = cm.USER_ID
试试这个:
SELECT string_agg([user_id] , ', ')
FROM
(
select cm.USER_ID
from mytable cm
where cm.USER_ID = 'A' or USER_ID = 'B'
group by cm.USER_ID
having count(1) > 1
) DS ([user_id]);
DECLARE @myquery TABLE( USER_ID NVARCHAR( MAX ) );
INSERT @myquery SELECT cm.USER_ID
FROM mytable cm
WHERE cm.USER_ID = 'A' OR USER_ID = 'B'
GROUP BY cm.USER_ID
HAVING count(1) > 1;
SELECT string_agg( CAST(@myquery.USER_ID as NVARCHAR(MAX) ) , ', ' ) AS DuplicateList
FROM mytable cm
INNER JOIN @myquery mq
ON mq.USER_ID = cm.USER_ID
使用表变量保存查询结果。使用表变量保存查询结果。什么是DS?不是AS,是吗?@Hax它是子查询的别名。为什么不是AS?@Has你可以将它写成
AS DS
-并且DS
缺少数据源
-你可以使用有效的名称。什么是DS?不是AS,确定吗?@Hax它是子查询的别名。为什么不是AS?@您可以将其写成AS DS
-并且DS
缺少数据源
-您可以使用有效名称。