连接列和行

用户

给定一个表,例如:

Person

id, name, last_name, age

1, joshua,  smith,  33
2, melissa, fox,    65
3, james,   bond,   31
...

我必须从表中读取每一行,获取当前行,并合并其列名和值,然后最后将它们作为新行放入另一个表中。例如:

concat_row新表中的(varchar):

"name: joshua, last_name: smith, age: 33"
"name: melissa, last_name: fox, age: 65"
"name: james, last_name: bond, age: 31"
...

关键是,我需要使用一个通用查询,在该查询中我不应该知道有多少列或它们的名字,因为该查询将与数百个表一起使用...因此,仅修改每个案例的表格名称。

鲨鱼

您可以使用以下SQL并根据需要进行扩展,

USE AdventureWorks2014

DECLARE @OwnerName VARCHAR(50)
DECLARE @TblName VARCHAR(50)

SET @OwnerName = 'Sales'
SET @TblName = 'Customer'

DECLARE @Columns VARCHAR(MAX)

SET @Columns = ''

SELECT @Columns = @Columns + ('''' + Column_Name + ':'' + ISNULL(convert(VARCHAR(MAX),' + Column_Name + '),'''')   + '',  '' + ')
FROM (
    SELECT *
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = @TblName
    ) A

--PRINT @Columns

DECLARE @FinalSelect VARCHAR(max)

SELECT @FinalSelect = 'Select ' + LEFT(@Columns, LEN(@Columns) - 10) + ' Contact_Row From ' + @OwnerName + '.' + @TblName

--print  @FinalSelect
EXEC (@FinalSelect)

输出是(前5行),

CustomerID:1,PersonID :、 StoreID:934,TerritoryID:1,AccountNumber:AW00000001,rowguid:3F5AE95E-B87D-4AED-95B4-C3797AFCB74F,ModifiedDate:Sep 12 2014 11:15 AM CustomerID:2,PersonID :、 StoreID:1028, TerritoryID:1,AccountNumber:AW00000002,rowguid:E552F657-A9AF-4A7D-A645-C429D6E02491,ModifiedDate:2014年9月12日11:15 AM CustomerID:3,PersonID :, StoreID:642,TerritoryID:4,AccountNumber:AW00000003,rowguid:130774B1 -DB21-4EF3-98C8-C104BCD6ED6D,ModifiedDate:2014年9月12日11:15 AM客户ID:4,PersonID :, StoreID:932,TerritoryID:4,AccountNumber:AW00000004,rowguid:FF862851-1DAA-4044-BE7C-3E85583C054D,ModifiedDate: 2014年9月12日11:15 AM客户ID:5,人员ID :、商店ID:1026,地区ID:4,帐号:AW00000005,行guid:83905BDC-6F5E-4F71-B162-C98DA069F38A,修改日期:2014年9月12日11:15 AM

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章