gpt4 book ai didi

SQL Server 2005 透视查询语法帮助

转载 作者:行者123 更新时间:2023-12-04 05:24:37 24 4
gpt4 key购买 nike

我已经阅读了 SQL 中的枢轴并查看了大量示例,但我无法让它按照我想要的方式工作。我有一个跟踪员工购买的交易历史表。

示例:

Employee | Date       | Value
1234 | 2012-11-13 | 20.23

我需要为所有员工创建一个每月总销售额的摘要,如下所示:
Employee | Jan | Feb | Mar | ... | Dec| YearTotal

我对分组和获取每月总数感到困惑。
感谢您的帮助!

编辑
好的,如果我没有准备好请求帮助,我深表歉意。我一天中的大部分时间都在为此工作,并且感到沮丧和疲倦。我有超过 10 年的 SQL 经验,但是这是我第一次尝试进行数据透视查询,我只是不明白它们应该如何工作以及如何使其工作为了我的需要。我需要在星期一早上生成这些数字,所以大约需要 7 个小时。我最后的努力将是为每个月运行一个单独的查询,然后将数据转储到 excel 中以用于报告。我希望这对于最终用户在 future 运行是无缝的。

这是我尝试的简化版本,它是从 MSDN 的示例中重新编写的:
SELECT CUSTOMER_NUMBER, [jan], [feb]
FROM
(
SELECT month(transaction_date)
FROM customer_item_purchases
WHERE TRANSACTION_DATE BETWEEN '2011-11-16' AND '2012-11-15'
)
PIVOT
(SUM(SALES_VALUE) IN ([JAN], [Feb]))
AS pvt

我需要指定日期之间每个月的总月销售额。 Nov 将显示在月初和月底的列中。源表很简单:Employee、transdate、receipt、location等。

最佳答案

fiddle 示例(不确定如果我没有登录但现在可以工作是否会保存:http://sqlfiddle.com/#!6/8c96a/3/15

我只转了 3 个月,但你很有希望得到这个想法。通常您在 From 之后有嵌套的 Select,因为您只想在某些列上进行透视/分组。然后出现数据透视,您可以在其中列出要成为列名的值 FOR mnth IN ( [1], [2], [3] )对应于 Month(Date) as mnth场。

Create table Sales
( EmpId int, Date DateTime, Value integer );

Insert Into Sales (EmpId, Date, Value)
Values (1,'1/1/2012', 12);
Insert Into Sales (EmpId, Date, Value)
Values (1,'2/1/2012', 12);
Insert Into Sales (EmpId, Date, Value)
Values (1,'3/1/2012', 12);
Insert Into Sales (EmpId, Date, Value)
Values (1,'4/1/2012', 12);
Insert Into Sales (EmpId, Date, Value)
Values (1,'5/1/2012', 12);
Insert Into Sales (EmpId, Date, Value)
Values (1,'6/1/2012', 12);
Insert Into Sales (EmpId, Date, Value)
Values (1,'7/1/2012', 12);

Insert Into Sales (EmpId, Date, Value)
Values (2,'1/1/2012', 112);
Insert Into Sales (EmpId, Date, Value)
Values (2,'1/15/2012', 112);
Insert Into Sales (EmpId, Date, Value)
Values (2,'2/1/2012', 312);
Insert Into Sales (EmpId, Date, Value)
Values (2,'3/1/2012', 512);
Insert Into Sales (EmpId, Date, Value)
Values (2,'4/1/2012', 2);
Insert Into Sales (EmpId, Date, Value)
Values (2,'5/1/2012', 3);
Insert Into Sales (EmpId, Date, Value)
Values (2,'6/1/2012', 1);
Insert Into Sales (EmpId, Date, Value)
Values (2,'7/1/2012', 0);


SELECT EmpID, [1], [2], [3]
FROM
(SELECT EmpID, Month(Date) as mnth, Value
FROM Sales) p
PIVOT
(
Sum (Value)
FOR mnth IN
( [1], [2], [3] )
) AS pvt
ORDER BY pvt.EmpID;

关于SQL Server 2005 透视查询语法帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13336457/

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