0

我有一个正在创建的视图,我想按从具有日期和时间的列中提取的日期进行分组。这就是我所在的地方......

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
4

2 回答 2

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
于 2013-11-14T15:10:23.873 回答
0

如果您可以更改架构,请将其存储为开始的日期。否则,将您的 group by 子句更改为类似于...

GROUP BY CAST(TStamp AS DATE)

编辑:忘记了您使用的是 SQL 2005。您仍然可以执行以下操作,但请记住,这应该被视为一种丑陋的短期解决方法。此线程中有关重新设计的所有评论都是完全有效的,应该继续关注......

GROUP BY SUBSTRING(TStamp, 0, 11)
于 2013-11-14T14:27:13.520 回答