我在SELECT
查詢與GROUP BY
和DATEADD
一個問題,它是這樣的:(見下文樣本SQL代碼)SQL服務器:GROUP BY和DATEADD混亂
SELECT
'USER1' AS [user_id],
DATEADD(hh,-15,log_date) AS [LogDate],
MIN(DATEADD(hh,-15,login_time)) AS [Login],
MAX(DATEADD(hh,-15,logout_time)) AS [Logout],
DATEDIFF(MINUTE,MIN(DATEADD(hh,-15,login_time)),
MAX(DATEADD(hh,-15,logout_time)))/60.0 AS [TotalHrs]
FROM
tblDTR
WHERE
user_id = 'USER1'
AND log_date BETWEEN CAST('02/07/2014' AS datetime)
AND CAST('02/28/2014' AS datetime)
GROUP BY
user_id,
DATEADD(hh, -15, log_date)
ORDER BY
LogDate ASC
,這是結果:
我想要做的是LogDate
列必須顯示真正的約會&時間(意思是,列不能減去-15),也可以在LogDate
列上的結果表中看到,儘管我用GROUP BY DATEADD(hh, -15, log_date)
它根本不起作用。我錯過了我的SQL代碼的一些功能嗎?
這是我的新的SQL代碼以顯示LogDate
沒有減去15:
SELECT
'USER1' AS [user_id],
CONVERT(varchar,log_date,101) AS [LogDate], <-- I changed here but it didn't work, it give me error.
MIN(DATEADD(hh, -15, login_time)) AS [Login],
MAX(DATEADD(hh, -15, logout_time)) AS [Logout],
DATEDIFF(MINUTE, MIN(DATEADD(hh, -15, login_time)),
MAX(DATEADD(hh, -15, logout_time)))/60.0 AS [TotalHrs]
FROM
tblDTR
WHERE
user_id = 'USER1'
AND log_date BETWEEN CAST('02/07/2014' AS datetime)
AND CAST('02/28/2014' AS datetime)
GROUP BY
user_id,
DATEADD(hh, -15, log_date)
ORDER BY
LogDate ASC
錯誤:
Msg 8120, Level 16, State 1, Line 3
Column 'tblDTR.log_date' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
任何替代和建議大加讚賞。謝謝!
編輯: 順便說一句,我使用的是SQL Server 2012的
輸出必須:
-------------------------------------------------------------------------
| user_id | LogDate | Login | LogOut | TotalHrs |
-------------------------------------------------------------------------
| USER1 | 02/07/2014 | 2014-02-07 08:12 | 2014-02-07 19:30 | 11.28 |
-------------------------------------------------------------------------
你說的'組by'不工作..這是工作,但我懷疑你希望它組在一起的日子?您必須首先將'log_date'轉換爲'DATE'數據類型,因爲它現在是'DATETIME',它將按該列中的每個日期時間進行分組。爲什麼你實際上減少了15個小時? – NickyvV 2015-03-25 08:19:19
'03/08/2014'來自'LogDate'嗎?你如何確定? – NickyvV 2015-03-25 08:23:41
** 03/08/2014 **是LOGDATE的實際日期(尚未減去15),但我希望將GROUP BY LOGDATE列減去15 – Waelhi 2015-03-25 08:28:46