XcO*_*der 1 sql t-sql sql-server
桌子
ID | 日期 | 模型 | 价格 |
---|---|---|---|
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 |
如何使用查询/视图从数据库表中获取所有记录并将具有相同日期的行合并为一行?我不知道如何开始。我已经尝试过FOR XML
,但没有得到我想要的结果
SELECT DISTINCT transactions.[id],
SUBSTRING(
(
SELECT ','+ transactions.model AS [text()]
FROM transactions
FOR XML PATH ('')
), 2, 1000) transactions
FROM transactions
Run Code Online (Sandbox Code Playgroud)
哪个返回
ID | 模型 |
---|---|
6255 | HZH98CC、CVVCDE7、WWRT423、DT4、D42C |
预期结果
ID | 日期 | 模型 | 价格 |
---|---|---|---|
6255,6256,6257 | 2018-01-31 | HZH98CC、CVVCDE7、WWRT423 | 435.34,23.24,24.24 |
6258,6259 | 2018-02-14 | DT4、D42C | 43.23,243.2 |
这是否可能或者我必须这样做
Select distinct [date]
From transactions Order by [date]
Run Code Online (Sandbox Code Playgroud)
并使用结果日期来选择匹配的行并稍后将它们组合在代码中?
我需要将匹配行(即具有相同日期的行)中的所有单元格连接到该列的单元格中。
自 SQL Server 2017 以来,SQL Server 支持string_agg()
:
select date,
string_agg(id, ',') within group (order by id) as ids,
string_agg(model, ',') within group (order by id) as model,
string_agg(price, ',') within group (order by id) as prices
from transactions
group by date;
Run Code Online (Sandbox Code Playgroud)
在旧版本的 SQL Server 中,您必须使用 XML 解决方法。
归档时间: |
|
查看次数: |
6658 次 |
最近记录: |