我有2個表UserSession
和Sale
。如果存在塊
表User
有4列,即UserID
,UserSessionID
,SessionOpenDate
和SessionCloseDate
。
表Sale
具有2列,這是price
,cost
,userID
和CompletedDate
。
當用戶登錄時,將在User
表中創建一個新行,其中用戶的登錄時間戳將保存在SessionOpenDate
中,並且將爲該會話分配新的UserSessionID
。當用戶註銷時,註銷時間戳將被保存在SessionCloseDate
中。
當用戶仍然登錄時,用戶可以進行一些銷售,並將銷售信息保存在Sale
表中。銷售完成時的時間戳保存在CompletedDate
列中。
由於某種原因,我需要在UserSessionID
的某個UserSessionID
中完成所有銷售,其中CompletedDate
必須在SessionOpenDate
和SessionCloseDate
之內。但是,如果用戶尚未註銷,這意味着SessionCloseDate
中的值爲空,CompletedDate
應該在SessionOpenDate
之間,現在。
這裏是我的查詢:
SELECT SUM(s.cost) AS Cost, SUM(s.price) AS Price
FROM Sale AS s
INNER JOIN UserSession AS u
ON s.userID = u.userID
WHERE
(s.CompletedDate >=
(SELECT SessionOpenDate
FROM UserSession
WHERE (UserSessionID = u.UserSessionID)
)
)
AND
(s.CompletedDate <
(
IF EXISTS
(
SELECT SessionCloseDate AS closeTime
FROM UserSession AS UserSessionTemp
WHERE (UserSessionID = u.UserSessionID)
)
BEGIN
SET closeTime = SELECT CURRENT_TIMESTAMP
END
)
)
AND u.UserSessionID IN (1)
但是,SQL Server說Incorrect syntax near the keyword 'IF'.
和Incorrect syntax near ')'
。
任何人都可以告訴我我的IF塊出了什麼問題嗎?
感謝
使用'CASE WHEN'。你在「SELECT」語句中用SET來做什麼? –