我需要查询销售表,并让结果表显示给定日期内不同时间段的细分.
例如,该表包含以下字段:
Id (int), EntryDate (datetime), SaleReference (varchar)
我想生成一个如下所示的表:
Date Sales 9am-12pm Sales 12pm-3pm Sales 6pm-9pm ---------- -------------- -------------- ------------- 01-01-2010 10 20 6 02-01-2010 12 16 3 03-01-2010 43 11 2
任何有关这方面的帮助将不胜感激.谢谢
假设SQL Server在下面.如果不是类似的逻辑可能适用于您的RDBMS,但可能是一个不同的函数来从日期时间获取小时部分,BETWEEN的行为也可能不同(在SQL Server中它是一个包含范围).
SELECT CAST([Date] AS Date) AS [Date],
COUNT(CASE WHEN DATEPART(hour, [Date]) BETWEEN 9 AND 11 THEN 1 ELSE NULL END)
AS [Sales 9am-12pm],
COUNT(CASE WHEN DATEPART(hour, [Date]) BETWEEN 12 AND 14 THEN 1 ELSE NULL END)
AS [Sales 12pm-3pm],
COUNT(CASE WHEN DATEPART(hour, [Date]) BETWEEN 18 AND 20 THEN 1 ELSE NULL END)
AS [Sales 6pm-9pm]
FROM Table
GROUP BY CAST([Date] AS Date) /*For SQL2008*/
Run Code Online (Sandbox Code Playgroud)
注意:以前版本的SQL Server需要更多的环节来获取日期时间之外的日期部分.例如CAST(FLOOR( CAST( GETDATE() AS FLOAT ) ) AS DATETIME(从这里)
| 归档时间: |
|
| 查看次数: |
4875 次 |
| 最近记录: |