字段为1行

时间:2015-03-30 22:59:43

标签: sql sql-server tsql

我正在使用SQL Server 2014和SSIS,我需要执行以下操作:

我有一个包含此信息的表:

Location |Location Type |Region | World Region
1        |        A     |   EU  |  EU
36       |        V     |   AM  |   AM
24       |        S     |   AS  |  AS
26       |        G     |   AJ  |   AJ

我需要获得下一个结果

Locations

'1,A,EU,EU'
'36,V,AM,AM'
'24,S,AS,AS'
'26,G,AJ,AJ'

有人知道另类吗?我将保存保存到表名的变量中,因此每个表都有不同的列数,我需要在8个表中执行此操作。

2 个答案:

答案 0 :(得分:0)

您可能希望在字段之间使用带有逗号的CONCAT函数。在您的示例中,您需要以下内容:

SELECT CONCAT(Location, ',', LocationType, ',', Region, ',', WorldRegion) AS Locations FROM ...

答案 1 :(得分:0)

您可以使用动态查询

DECLARE @tblName VARCHAR(20) = 'your_tbl_name'
DECLARE @columns NVARCHAR(MAX), @sql NVARCHAR(MAX)

SELECT @columns = COALESCE(@columns, '') + '[' + COLUMN_NAME + '], '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @tblName

SET @sql = 'SELECT CONCAT(' + STUFF(@columns, LEN(@columns), 1, '') + ') FROM ' + @tblName
EXEC(@sql)