如何将 SQL 查询结果行作为具有不同标题名称的列? [关闭]
Posted
技术标签:
【中文标题】如何将 SQL 查询结果行作为具有不同标题名称的列? [关闭]【英文标题】:How can I get SQL query result rows as columns with different header names? [closed] 【发布时间】:2021-02-13 08:05:06 【问题描述】:Sales Type Name | Sales Type |
---|---|
Cash | 500 |
Visa | 1200 |
我希望我的结果如下所示:
cash | visa |
---|---|
500 | 1200 |
【问题讨论】:
如果你有超过两行怎么办?你想要值的总和吗?最高值? 我使用 SQL Server ,并且我想要具有相同销售类型的行的总和 请做一些研究,试一试,向我们展示你的尝试。 如果您有实际问题,请遵循标准 PIVOT 示例并在此处回复,而不仅仅是“请为我做这件事”,请尝试以下操作:sqlservertutorial.net/sql-server-basics/sql-server-pivot 【参考方案1】:你可以使用PIVOT
:
SELECT [Cash], [Visa]
FROM (
SELECT SalesTypeName, SalesType
FROM t
) src
PIVOT
(
SUM (SalesType)
FOR SalesTypeName IN ([Cash], [Visa])
) pvt
如果您有更多SalesTypeName
的情况,您可以通过在PIVOT
的FOR
子句中添加值来轻松扩展查询。对于动态数量的值,您必须使用动态PIVOT
。
Demo here
【讨论】:
【参考方案2】:我会推荐条件聚合:
select sum(case when sales_type_name = 'Cash' then Sales_Type end) as cash,
sum(case when sales_type_name = 'Visa' then Sales_Type end) as visa
from t
【讨论】:
以上是关于如何将 SQL 查询结果行作为具有不同标题名称的列? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
具有 unnest 的 PostgreSQL 查询不返回空值的结果行
如何使用 Entity Framework Core 5.0 将复杂 SQL 查询的结果行映射到自定义 DTO?