SQL Get Weekly产品项目数

时间:2014-08-18 13:29:43

标签: sql sql-server count

我试图将每个产品每周的总数量输入表中。每当有人订购产品时,都会将其输入到包含以下信息的数据库中:

表:订单

order_id
order
order_date

" order"有8个选项,它们是预设的,永远不会改变。我需要查看该表中每个项目的计数..

我想看到这样的事情:

 Order     week 1    week 2    week 3    week 4 etc...

 order1    30         10       11         23
 order2    40          4        0         44
 order3    88         23       12         22

有人能告诉我这是怎么实现的吗?

谢谢..我很坚持这个。

1 个答案:

答案 0 :(得分:1)

正如NickyvV所说,你想要一个支点。但是,SQL Server无法接受数据透视表中的动态列,因此您必须将它们拼写出来。另外,您可能不希望第一列中的order_id,因为您只会获得计数中的1和0,而是类似于product_id。所以你可以这样做:

SELECT 
product_id,
[week 1],[week 2],[week 3],[week 4],[week 5]
FROM
        (SELECT 
        product_id,
        'week ' + cast(DatePart(wk,[order_date]) as varchar(2)) as WeekName
        FROM [Orders]) as o
pivot (count(WeekName) 
for WeekName in ([week 1],[week 2],[week 3],[week 4],[week 5])) as p

不幸的是,您必须拼出所有可能的周名。有一些方法可以使用动态SQL,但我不推荐它们,因为它们相当复杂和令人讨厌。另外,请记住,如果这是进入报告,您通常会在报告应用程序(SSRS等)而不是数据库中进行此转动。