gpt4 book ai didi

sql - SQL PIVOT可以做这样的转换吗?

转载 作者:行者123 更新时间:2023-12-02 15:59:33 27 4
gpt4 key购买 nike

我的数据看起来像

+-------+-------+-------+------+
| Group | Count | Month | Year |
+-------+-------+-------+------+
| A | 102 | Jan | 2015 |
| B | 20 | Jan | 2016 |
| C | 30 | Feb | 2015 |
| A | 10 | Jan | 2016 |
| C | 20 | Feb | 2016 |
+-------+-------+-------+------+

我想要像这样的输出

+-------+-------+------+-------+
| Group | Month | 2015 | 2016 |
+-------+-------+------+-------+
| A | Jan | 102| 10 |
| B | Jan | 20 | 0 |
| C | Feb | 30 | 20 |
+-------+-------+------+-------+

我尝试使用 PIVOT,但我不确定它是否会显示我想要的结果。

下面的查询是我的一次糟糕的尝试(不起作用)-

SELECT 'Total' AS Total, 
[2015], [2016]
FROM
(SELECT DATENAME(YEAR,[mydate]) as Y, Datename(month,[mydate]) as M
FROM incidents) AS SourceTable
PIVOT
(
count(DATENAME(YEAR,[mydate]))
FOR DATENAME(YEAR,[mydate]) IN (2015,2016)
) AS PivotTable;

我的日期列采用以下格式 2016-01-20 03:00:11.000。我使用 MONTH()DATENAME 函数来提取月份编号和名称。

最佳答案

我认为这就是您所需要的:

WITH Src AS
(
SELECT * FROM (VALUES
('A',102, 'Jan', 2015),
('B', 20, 'Jan', 2016),
('C', 30, 'Feb', 2015),
('A', 10, 'Jan', 2016),
('C', 20, 'Feb', 2016)) T([Group], Count, Month, Year)
)
SELECT [Group],Month,ISNULL([2015],0) [2015],ISNULL([2016],0) [2016] FROM Src
PIVOT
(SUM(Count) FOR Year IN ([2015], [2016])) AS Pvt
ORDER BY [Group],Month

关于sql - SQL PIVOT可以做这样的转换吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38713215/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com