我有一个我正在创建的视图,我希望按照具有日期和时间的列中的提取日期进行分组。这就是我的地方......
SELECT
ClockCode AS MOnum, SUM(Actual_Hrs) AS Runtothours, TStamp
FROM
dbo.Raw_Booking
WHERE
(Actual_Hrs > 0) AND (ClockCode LIKE 'MO%')
AND (TStamp > CONVERT(DATETIME, '2013-01-01 00:00:00', 102))
GROUP BY
ClockCode, TStamp
所以当我按TStamp
列分组时,根据时间有一个记录...我希望按日期获得每个订单的总运行时间。
TStamp
列的格式为:
2013-01-02 08:18:47.000
答案 0 :(得分:0)
如果您可以更改架构,请将其存储为开始日期。否则,将group by子句更改为类似于......
的内容GROUP BY CAST(TStamp AS DATE)
编辑:忘了你在SQL 2005中。你仍然可以做类似以下的事情,但请记住,这应该被认为是一个丑陋的,短期的,解决方法。本主题中关于重新设计的所有评论都是完全有效的,应该继续......
GROUP BY SUBSTRING(TStamp, 0, 11)
答案 1 :(得分:0)
SELECT ClockCode AS MOnum
, SUM(Actual_Hrs) AS Runtothours
, TStampDate
FROM dbo.Raw_Booking
CROSS APPLY (
SELECT CONVERT(datetime, TStamp, 102) AS TStampDateTime
) AS CA1
CROSS APPLY (
SELECT DATEADD(day, DATEDIFF(day, 0, TStampDateTime), 0) AS TStampDate
) AS CA2
WHERE Actual_Hrs > 0
AND ClockCode LIKE 'MO%'
AND TStampDateTime > CONVERT(DATETIME, '2013-01-01 00:00:00', 102))
GROUP BY ClockCode
,TStampDate