SQL选择多行作为一行

SQL选择多行作为一行,sql,sql-server,tsql,Sql,Sql Server,Tsql,表格 身份证件 日期 模型 价格 6255 2018-01-31 HZH98CC 435.34 6256 2018-01-31 CVVCDE7 23.24 6257 2018-01-31 WWRT423 24.24 6258 2018-02-14 DT4 43.23 6259 2018-02-14 D42C 243.2 自SQL Server 2017年以来,SQL Server已支持: 在较旧版本的SQL Server中,您必须使用XML解决方案。自SQL Server 2017以来,SQL

表格

身份证件 日期 模型 价格 6255 2018-01-31 HZH98CC 435.34 6256 2018-01-31 CVVCDE7 23.24 6257 2018-01-31 WWRT423 24.24 6258 2018-02-14 DT4 43.23 6259 2018-02-14 D42C 243.2
自SQL Server 2017年以来,SQL Server已支持:


在较旧版本的SQL Server中,您必须使用XML解决方案。

自SQL Server 2017以来,SQL Server支持:


在较旧版本的SQL Server中,您必须使用XML解决方法。

对于没有string_agg函数的较旧版本的SQL Server,使用XML的示例

DECLARE @t TABLE
    (
    id varchar(10),
    date date, 
    model varchar(10),
    price varchar(10)
    )

INSERT INTO @t
select 6255 ,'2018-01-31',  'HZH98CC',  435.34 union all
select 6256 ,'2018-01-31',  'CVVCDE7',  23.24 union all
select 6257 ,'2018-01-31',  'WWRT423',  24.24 union all
select 6258 ,'2018-02-14',  'DT4',  43.23 union all
select 6259 ,'2018-02-14',  'D42C', 243.2;

 SELECT 
  stuff( ( SELECT ','+ [id] FROM @t WHERE date = t1.date FOR XML PATH('') 
                     ),1,1,'') id,
  date,  
  stuff( ( SELECT ','+ [model] FROM @t WHERE date = t1.date FOR XML PATH('') 
                     ),1,1,'') model,
  stuff( ( SELECT ','+ [price] FROM @t WHERE date = t1.date FOR XML PATH('') 
                     ),1,1,'')  price
FROM (SELECT distinct date FROM @t ) t1

示例:对没有string_agg函数的旧版本SQL Server使用XML

DECLARE @t TABLE
    (
    id varchar(10),
    date date, 
    model varchar(10),
    price varchar(10)
    )

INSERT INTO @t
select 6255 ,'2018-01-31',  'HZH98CC',  435.34 union all
select 6256 ,'2018-01-31',  'CVVCDE7',  23.24 union all
select 6257 ,'2018-01-31',  'WWRT423',  24.24 union all
select 6258 ,'2018-02-14',  'DT4',  43.23 union all
select 6259 ,'2018-02-14',  'D42C', 243.2;

 SELECT 
  stuff( ( SELECT ','+ [id] FROM @t WHERE date = t1.date FOR XML PATH('') 
                     ),1,1,'') id,
  date,  
  stuff( ( SELECT ','+ [model] FROM @t WHERE date = t1.date FOR XML PATH('') 
                     ),1,1,'') model,
  stuff( ( SELECT ','+ [price] FROM @t WHERE date = t1.date FOR XML PATH('') 
                     ),1,1,'')  price
FROM (SELECT distinct date FROM @t ) t1

这回答了你的问题吗?你可以用这个。请细化(或简化)您的预期结果示例。目前来看,聚合模型字符串并随机只包含其中一个价格是没有意义的。@Gowthaman link可能就是其中之一。我会测试它,然后回来。这能回答你的问题吗?你可以用这个。请细化(或简化)您的预期结果示例。目前来看,聚合模型字符串并随机只包含其中一个价格是没有意义的。@Gowthaman link可能就是其中之一。我会测试一下,然后回来