sql - 如何使用分隔符将行合并为一行
问题描述
我需要将行合并为一行以进行计算摘要(SQL Server 2014)。
我的 SQL 查询是:
SELECT
[c].[Iso],
SUM([r].[Quantity]) AS [Quantity],
SUM([r].[Amount]) AS [Amount]
FROM
[CarReport].[dbo].[Refuelling] [r]
INNER JOIN
[CarReport].[dbo].[Currency] [c] ON [r].[CurrencyId] = [c].[CurrencyId]
WHERE
[r].[DataId] = 15
AND [r].[IsDeleted] = 0
GROUP BY
[r].[CurrencyId], [c].[Iso]
此查询的结果是:
CZK | 50.00 | 1350,00
EUR | 23.00 | 463,20
我想要这个结果:
CZK/EUR | 50.00/23.00 | 1350,00/463,20
添加新货币 (x) 时,必须附加新货币的结果:
CZK/EUR/x | 50.00/23.00/x | 1350,00/463,20/x
有人可以帮我解决这个话题吗?
非常感谢
解决方案
像这样的东西也应该适用于早期版本的 MSSQL。
;with subQuery as (
-- paste your base query here
-- extend it with one additional column:
-- ,ROW_NUMBER() OVER (ORDER BY ISO) RowNum
)
select
(select stuff((select '/' + convert(nvarchar(max), Iso) from subQuery order by RowNum for xml path('')), 1, 1, '')),
(select stuff((select '/' + convert(nvarchar(max), Quantity) from subQuery order by RowNum for xml path('')), 1, 1, '')),
(select stuff((select '/' + convert(nvarchar(max), Amount) from subQuery order by RowNum for xml path('')), 1, 1, ''))
推荐阅读
- python - 如何更改python的PATH?
- reactjs - 子组件和父组件之间的反应事件处理
- mysql - 记录后立即访问存储在数据库表中的“最新”记录
- amazon-web-services - 如何让AWS aurora Mysql变成可写实例
- java - Box Java SDK - 404 File Not Found on public available document
- loops - SwiftUI FetchRequest 和 onReceive 导致无限循环
- javascript - 使用来自 API 的输入替换车把变量时遇到问题
- r - 如何修复 rep(1,N) 中的错误:使用 glmnet 时的“times”参数无效
- c++ - 我怎么知道我的最后一条指令
- kubernetes - Azure 应用程序网关如何与 kubernetes 入口控制器(nginx)连接