Sql 按1列分组并合并行
我有一个SQL表,看起来像这样 名称|字段|值|Sql 按1列分组并合并行,sql,sql-server-2005,Sql,Sql Server 2005,我有一个SQL表,看起来像这样 名称|字段|值| 约翰|国家|美国| 约翰|城市|纽约| 约翰街第五大道 迈克|国家|英国| 迈克|城市|伦敦| 迈克|街|萨里街| 蒂姆|国家|加拿大| 蒂姆|城市|蒙特利尔| 我需要的是根据名称将其分组并合并成行(每个名称一行),如下所示 |名称|国家|城市|街道| |约翰|美国|纽约|第五大道| |迈克|英国|伦敦|萨里街| |蒂姆|加拿大|蒙特利尔|零| 有人知道如何实现这样的目标吗 编辑:字段计数是动态的。用户可以添加其他字段类型,例如GUI中的ZI
约翰|国家|美国|
约翰|城市|纽约|
约翰街第五大道 迈克|国家|英国|
迈克|城市|伦敦|
迈克|街|萨里街|
蒂姆|国家|加拿大|
蒂姆|城市|蒙特利尔| 我需要的是根据名称将其分组并合并成行(每个名称一行),如下所示 |名称|国家|城市|街道|
|约翰|美国|纽约|第五大道|
|迈克|英国|伦敦|萨里街|
|蒂姆|加拿大|蒙特利尔|零| 有人知道如何实现这样的目标吗 编辑:字段计数是动态的。用户可以添加其他字段类型,例如GUI中的ZIP,它应该自动反映在查询中 提前非常感谢! 彼得
枢轴
功能
SELECT Name, Country, City, Street
FROM
(
SELECT Name, Field, Value
FROM TableName
) data
PIVOT
(
MAX(Value)
FOR Field IN (Country, City, Street)
) pvt
╔══════╦═════════╦══════════╦══════════════╗
║ NAME ║ COUNTRY ║ CITY ║ STREET ║
╠══════╬═════════╬══════════╬══════════════╣
║ John ║ USA ║ New York ║ 5th avenue ║
║ Mike ║ UK ║ London ║ Surrey steet ║
║ Tim ║ Canada ║ Montreal ║ (null) ║
╚══════╩═════════╩══════════╩══════════════╝
谢谢你的快速回复。我忘了说字段计数是动态的,这实际上是最大的问题。如果你能想点什么,那就太好了。
╔══════╦═════════╦══════════╦══════════════╗
║ NAME ║ COUNTRY ║ CITY ║ STREET ║
╠══════╬═════════╬══════════╬══════════════╣
║ John ║ USA ║ New York ║ 5th avenue ║
║ Mike ║ UK ║ London ║ Surrey steet ║
║ Tim ║ Canada ║ Montreal ║ (null) ║
╚══════╩═════════╩══════════╩══════════════╝