Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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 将字段设置为1行_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 将字段设置为1行

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

我正在使用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个表中执行此操作。

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


选择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文件?