显示 SQL 中每天的产品销量

Displaying products sales for each day in SQL

我有一个问题我找不到解决方案。

我有一个 table "SELLS",其中包含一家商店的所有销售量,我想显示某个时间段内每天每种产品的销售量。

例如:

|       DATE |  NAME    | QTY |
|------------|----------|-----|
| 2014-07-03 |     Coca |   1 |
| 2014-07-03 |    Fanta |   1 |
| 2014-07-03 | Orangina |   5 |
| 2014-07-03 |     Coca |   3 |
| 2014-07-04 |     Coca |   2 |
| 2014-07-05 |     Coca |   4 |
| 2014-07-05 |    Fanta |   1 |
| 2014-07-05 |    Juice |   2 |

我想要的显示是:

    |       NAME | TOTAL  | 2014-07-03 |  2014-07-04 |  2014-07-05 |
    |------------|--------|------------|-------------|-------------|
    |      Coca  |   10   |         4  |          2  |          4  |
    |     Fanta  |    2   |         1  |          0  |          1  |
    |  Orangina  |    1   |         1  |          0  |          0  |
    |     Juice  |    1   |         0  |          0  |          1  |

用户会指定他想要显示的时间段,所以我必须对日期使用 BETWEEN 函数。

我尝试使用 PIVOT 函数,但我仍然不熟悉它

编辑:我正在使用 SQL Server 2012。

非常感谢您的帮助。

这不就可以了吗?

SELECT sum(QTY), DATE, NAME FROM SELLS WHERE DATE BETWEEN .... GROUP BY DATE,NAME

P.S: 添加了 between 子句

Create table temp 
(
tdate date,
name varchar(10),
qty int
)

insert into temp values (getdate(),'A',10)

insert into temp values (getdate(),'B',20)

insert into temp values (getdate(),'C',20)
insert into temp values (getdate(),'A',20)
insert into temp values (getdate(),'B',30)
insert into temp values (getdate(),'C',40)
insert into temp values (getdate()+1,'A',20)
insert into temp values (getdate()+1,'B',30)
insert into temp values (getdate()+1,'C',40)




select * from 
( select tdate, name, qty
  from temp
) src
pivot (
  sum(qty)
  for tdate in ([2015-05-12],[2015-05-13])
) piv;