Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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 2005 - Fatal编程技术网

Sql 按1列分组并合并行

Sql 按1列分组并合并行,sql,sql-server-2005,Sql,Sql Server 2005,我有一个SQL表,看起来像这样 名称|字段|值| 约翰|国家|美国| 约翰|城市|纽约| 约翰街第五大道 迈克|国家|英国| 迈克|城市|伦敦| 迈克|街|萨里街| 蒂姆|国家|加拿大| 蒂姆|城市|蒙特利尔| 我需要的是根据名称将其分组并合并成行(每个名称一行),如下所示 |名称|国家|城市|街道| |约翰|美国|纽约|第五大道| |迈克|英国|伦敦|萨里街| |蒂姆|加拿大|蒙特利尔|零| 有人知道如何实现这样的目标吗 编辑:字段计数是动态的。用户可以添加其他字段类型,例如GUI中的ZI

我有一个SQL表,看起来像这样

名称|字段|值|


约翰|国家|美国|
约翰|城市|纽约|
约翰街第五大道 迈克|国家|英国|
迈克|城市|伦敦|
迈克|街|萨里街|
蒂姆|国家|加拿大|
蒂姆|城市|蒙特利尔|

我需要的是根据名称将其分组并合并成行(每个名称一行),如下所示

|名称|国家|城市|街道|


|约翰|美国|纽约|第五大道|
|迈克|英国|伦敦|萨里街|
|蒂姆|加拿大|蒙特利尔|零|

有人知道如何实现这样的目标吗

编辑:字段计数是动态的。用户可以添加其他字段类型,例如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)       ║
╚══════╩═════════╩══════════╩══════════════╝