在一天SQL查询中的指定时间段内选择数据

时间:2017-10-15 17:43:36

标签: sql sql-server sql-server-2008

我需要在一天内的不同指定时间段内收到物品。像这样的输出; SQL Output

有谁知道如何实现一个sql查询来返回这样的结果表,提前谢谢。

1 个答案:

答案 0 :(得分:2)

你可以这样做:

|   Item | 8AM-10AM | 10AM-12AM | 12PM-2PM | 2AM-4PM | >4PM |
|--------|----------|-----------|----------|---------|------|
| Item 1 |        2 |         4 |        1 |       0 |    0 |
| Item 2 |        0 |         0 |        1 |       2 |    2 |

示例结果

PIVOT

<强>更新

您可以将SELECT * FROM ( SELECT Item, Alias FROM Table1 INNER JOIN Ranges ON CAST(DateTimeCol AS TIME) >= [Start] AND CAST(DateTimeCol AS TIME) < [End] ) AS t PIVOT ( COUNT(Alias) FOR Alias IN([8AM-10AM], [10AM-12AM], [12PM-2PM],[2PM-4PM], [>4PM]) ) AS p; 表运算符与临时表一起使用,其中包含以下所有时间范围:

{{1}}