【发布时间】:2014-06-26 04:46:19
【问题描述】:
在这里,我有一个类似下面的查询,正在循环子 ID 并将其传递给该查询并获得适当的结果。这里我有 33 个子 ID,所以这个查询的结果包含 33 行
DECLARE @DATETIMENOW DATETIME
SET @DATETIMENOW = GETDATE()-7
SELECT COUNT(1) FROM BKA.CHILDEVENTS CHE JOIN BKA.CHILDEVENTPROPERITIES CHEP ON CHEP.EVENTID = CHE.EVENTID
WHERE (CHE.TYPE = 'ACCIDENT' OR (CHE.TYPE = 'BREAK' AND CHEP.PROPERTY = 'SUCCESS' AND CHEP.PROPERTYVALUE = 'FALSE'))
AND CHE.CHILDID = @CHILDID AND CHE.ADDDATE BETWEEN DATEADD(DD, -(DATEPART(DW, @DATETIMENOW-7)-1), @DATETIMENOW-7) AND
DATEADD(DD, 7-(DATEPART(DW, @DATETIMENOW-7)), @DATETIMENOW-7) AS PREVIOUSWEEKACCIDENTS
在这里,我尝试在此查询中使用 join 而不是循环 childid,但在一行中得到结果。我在这做错了什么
DECLARE @DATETIMENOW DATETIME
SET @DATETIMENOW = GETDATE()-7
SELECT COUNT(1) FROM BKA.CHILDEVENTS CHE JOIN BKA.CHILDEVENTPROPERITIES CHEP
ON CHEP.EVENTID = CHE.EVENTID
JOIN BKA.CHILDINFORMATION CHINFO
ON CHE.CHILDID = CHINFO.CHILDID
WHERE (CHE.TYPE = 'ACCIDENT' OR (CHE.TYPE = 'BREAK' AND CHEP.PROPERTY = 'SUCCESS' AND CHEP.PROPERTYVALUE = 'FALSE'))
AND CHE.ADDDATE
BETWEEN DATEADD(DD, -(DATEPART(DW, @DATETIMENOW-7)-1), @DATETIMENOW-7) AND
DATEADD(DD, 7-(DATEPART(DW, @DATETIMENOW-7)), @DATETIMENOW-7)
有什么建议吗?
【问题讨论】:
标签: sql-server-2008 tsql join