2011-04-29 51 views
0

我有一个销售表,显示每次销售的日期和时间。范围组中的COUNT记录按日期

例如:

saleid | saledate | saletime
1 | 20110327 | 101
2 | 20110327 | 102
3 | 20110328 | 201

(所以销售2 20110327发生在102)

我需要构建一个SQL语句:
组按日期销售(每行是一个不同的日期),然后
计数每个时间范围的销售额。 (由于每个时间范围是一个单独的列)

表应该是这个样子:

saledate | 101-159 | 200-259 |
20110327 | 2 | 0 |
20110328 | 0 | 1 |

它需要是一个单一的声明和saledate和saletime需要保持数字格式。
(我是从一个数据库表拉着几百万行)

我使用的MS Access

任何意见是极大的赞赏。

非常感谢!

+0

我一直离MS访问太久,无法完全回答这个问题,但作为一个提示,研究枢轴查询。 – 2011-04-29 07:09:54

回答

0
SELECT saledate, 
SUM(IIF(saletime >= 101 and saletime <= 159), 1, 0) as [101To159) 
SUM(IIF(saletime >= 200 and saletime <= 259), 1, 0) as [200To259) 
FROM myTable 
GROUP BY saledate 

注意:我还没有运行此查询。但是,这是可能的。

+0

这不是Partition()函数的用途吗? – 2011-04-30 19:39:08

0
SELECT saledate, 
SUM(case when saletime between 101 and 159 then 1 else 0 end) as R101_159, 
SUM(case when saletime between 200 and 259 then 1 else 0 end) as R200_59 
FROM myTable 
GROUP BY saledate