合并后无法在SQL Server中命名列
我无法以视图的形式保存下面的结果,因为第二列没有名称,我无法向其添加as名称,或者它不再工作 下面的语句像行一样合并,并在有多个结果的地方连接不同的值,与银行详细信息有关合并后无法在SQL Server中命名列,sql,sql-server,Sql,Sql Server,我无法以视图的形式保存下面的结果,因为第二列没有名称,我无法向其添加as名称,或者它不再工作 下面的语句像行一样合并,并在有多个结果的地方连接不同的值,与银行详细信息有关 select [Pers#No#], stuff(( Select distinct ', ' + cast( [Bank Account] as varchar(20) ) + ' ' + cast( [B
select [Pers#No#],
stuff(( Select distinct ', ' +
cast( [Bank Account] as varchar(20) ) + ' ' +
cast( [Bank Keys] as varchar(20) )
FROM [DATA].[dbo].[PA0009] as S
where S.[Pers#No#] = T.[Pers#No#]
For XML PATH('')),1,1,'' )
from [DATA].[dbo].[PA0009]
group by [Pers#No#]
就我个人而言,我发现这一点要清楚得多,而且您还可以对每个[PersNo]值执行一次XMLPath
未测试您应该为从子查询返回的列指定别名:
select [Pers#No#],
stuff(( Select distinct ', ' +
cast( [Bank Account] as varchar(20) ) + ' ' +
cast( [Bank Keys] as varchar(20) )
FROM [DATA].[dbo].[PA0009] as S
where S.[Pers#No#] = T.[Pers#No#]
For XML PATH('')),1,1,'' ) as whatever
from [DATA].[dbo].[PA0009]
group by [Pers#No#]
你确定吗?这对我很有用:
CREATE TABLE PA0009 ([Pers#No#] INT , [Bank Account] VARCHAR(10), [Bank Keys] VARCHAR(10))
SELECT [Pers#No#]
,stuff((
SELECT DISTINCT ', ' + cast([Bank Account] AS VARCHAR(20)) + ' ' + cast([Bank Keys] AS VARCHAR(20))
FROM [PA0009] AS S
WHERE S.[Pers#No#] = 132
FOR XML PATH('')
), 1, 1, '') AS X
FROM [PA0009]
GROUP BY [Pers#No#]
输出:
Pers#No# X
----------- ---------
刚刚看到我需要将我的As移动到XML路径之后。。。。。 所以我把它写得太早了,没有以专栏的真正结尾命名。。。谢谢各位。如果这篇文章对其他人来说没有价值,我甚至可以删除它。。。我完全错过了
select [Pers#No#],
(
stuff(( Select distinct ', ' + cast( [Bank Account] as varchar(20) ) + ' ' + cast( [Bank Keys] as varchar(20) )
FROM [DATA].[dbo].[PA0009] as S
where S.[Pers#No#] = T.[Pers#No#]
For XML PATH('')),1,1,'' ) ) as [Concatenate_Details]
from [DATA].[dbo].[PA0009] T
group by [Pers#No#]
你把列别名放在哪里?在stuff之前的第一个括号中。将[Bank Keys]转换为varchar20后的第二个括号,然后是[ColumnA]显示当前和所需输出。请检查下面的答案。。。我需要将我的as[ColumnA]移动到XML路径部分之后。。。这才是专栏的真正结尾。。。。
select [Pers#No#],
(
stuff(( Select distinct ', ' + cast( [Bank Account] as varchar(20) ) + ' ' + cast( [Bank Keys] as varchar(20) )
FROM [DATA].[dbo].[PA0009] as S
where S.[Pers#No#] = T.[Pers#No#]
For XML PATH('')),1,1,'' ) ) as [Concatenate_Details]
from [DATA].[dbo].[PA0009] T
group by [Pers#No#]