【问题标题】:How to count daily sales of salesman and show dates as a column in SQL QUERY如何计算推销员的每日销售额并将日期显示为 SQL QUERY 中的列
【发布时间】:2015-10-03 19:34:07
【问题描述】:

我有一张这样的销售表

salesmanID  customerID  productID   date
        1          100          1   20.02.2015
        1          101          2   20.02.2015
        1          102          4   21.02.2015
        2          122          6   20.02.2015
        2          120          2   22.02.2015
        3          150          1   23.02.2015
        3          144          8   23.02.2015
        3          122          4   24.02.2015

我想在给定两个日期(在此示例中为 20-02-2015 和 24-02-2015)的最小和最大日期之间每天计算每个推销员的每日销售额,

salesmanID  20.02.2015  21.02.2015  22.02.2015  23.02.2015  24.02.2015
         1          2            1           0           0           0
         2          1            0           1           0           0
         3          0            0           0           2           1

如何在 SQL 查询中做到这一点?

【问题讨论】:

  • 你做研究吗?检查PIVOT
  • PL/SQL 是 Oracle 的过程语言。 Microsoft SQL Server (sql-server) 是一个完全不同的 DBMS 产品。那你用什么?
  • 如果你的列是动态的,你需要使用动态 SQL ;)。
  • 我会做这个 ms-sql,而不是 plsql 对不起。

标签: sql sql-server


【解决方案1】:

你必须使用PIVOTcount of SalesmanID

declare @temp table
(salesmanID int, customerID int, productID int,  dates VARCHAR(10))
        insert into @temp values (1,100,1,CONVERT(VARCHAR(10), '20.02.2015', 104) )
        insert into @temp values (1,101,2,CONVERT(VARCHAR(10), '20.02.2015', 104) )
        insert into @temp values (1,102,4,CONVERT(VARCHAR(10), '21.02.2015', 104) )
        insert into @temp values (2,122,6,CONVERT(VARCHAR(10), '20.02.2015', 104) )
        insert into @temp values (2,120,2,CONVERT(VARCHAR(10), '22.02.2015', 104) )
        insert into @temp values (3,150,1,CONVERT(VARCHAR(10), '23.02.2015', 104) )
        insert into @temp values (3,144,8,CONVERT(VARCHAR(10), '23.02.2015', 104) )
        insert into @temp values (3,122,4,CONVERT(VARCHAR(10), '24.02.2015', 104) )

--QUERY
SELECT *
FROM (SELECT salesmanID, salesmanID as id,dates 
        FROM @temp) as s
PIVOT
(
    count(id)
    FOR dates IN ([20.02.2015], [21.02.2015], [22.02.2015], [23.02.2015], [24.02.2015])
)AS pivots

结果

【讨论】:

  • @mesutkaya 很高兴它能帮到你
猜你喜欢
  • 2022-11-22
  • 1970-01-01
  • 1970-01-01
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 2021-12-27
  • 2016-10-26
  • 2018-05-06
相关资源
最近更新 更多