我有一个结果集,它由一个日期字段和值列组成。SQL Server:按日期字段分组,按时间和日期排序
日期列可以是从周,月,几个月到几年的范围。格式为YYYY-mm-dd hh:mm:ss.ssss(例如,2015-03-01 00:00:00.000)
值列是一个简单的小数。
我很难按照我想要的方式获得结果。
从下面的查询中,您可能会看到我正在尝试实现的目标。 我正在从结果集中选择相对月份,小时数,日期和值。
SELECT
CONVERT(VARCHAR(2), datefield, 108) AS hourSlot,
SUM(value) AS hourTotal,
DATEPART(day,datefield) as day,
CASE CONVERT(VARCHAR(2), datefield, 108)
WHEN @stationStartTime
THEN 1
ELSE 0
END AS sortOrder
FROM
@hourTotalTemp
WHERE
DATEPART(MM, datefield) = 3
GROUP BY
DATEPART(day,datefield)
ORDER BY
day, sortOrder, CONVERT(VARCHAR(2), datefield, 108)
正如你所见。我需要结果按小时分组。然后按电台的开始时间排序,也按月份的日期排序。
编辑:
如上所述,用于查询的最终结果。
将是它的月回报小时插槽,从定义的“起始时间”开始,相对天(S)(1,2,3,4,5,6,7th等),和那么这些日子的价值。
结果为@hourtotalTemp
datefield value
------------------------------
2015-02-01 00:00:00.000 0
2015-02-01 01:00:00.000 0
2015-02-01 02:00:00.000 0
2015-02-01 03:00:00.000 0
2015-02-01 04:00:00.000 0
2015-02-01 05:00:00.000 0
编辑设置
这就是我想实现与查询什么。顶部的时间,左边的一天。数据在中间。
1日起有没有显示格式。](http://stackoverflow.com/questions/30032915/how-to-cast-the-datetime-to-time/30033028#30033028)2.请编辑您的问题,包括一些示例数据(最好是ddl + dml)和所需的输出。 –
@Zohar感谢您的输入。我已根据要求进行了修改。 – dannyb2100