Sql 将字段设置为1行
我正在使用SQL server 2014和SSIS,需要执行以下操作: 我有一张包含此信息的表格:Sql 将字段设置为1行,sql,sql-server,tsql,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
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个表中执行此操作。您可能需要在字段之间使用带逗号的函数。在您的示例中,您可能需要以下内容:
选择CONCAT(Location,,,,,LocationType,,,,Region,,,,,,WorldRegion)作为…中的位置
您可以使用动态查询
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)
是的,这就是解决方案,但我忘了提到我正在使用SSIS,我将表名保存到一个变量中,因此每个表都有不同的列数,我需要在8个表中执行此操作如果您只需要将每个查询结果或多或少地转换为CSV,我建议将这个负担转移到脚本或程序中,而不是直接在数据库层上尝试。您正在SSIS中循环8个表,并希望将每个表保存为CSV文件?