[英]Count statement with Join and where clause
前兩個是單獨的結果..第三個是我試圖加入另一個表的語句。我的問題是我無法在sql語句中設置條件。 在最后一個連接語句中,我得到了兩個帶有Route Id的列和帶有Flab = 1的和,但是我無法設置flag = 0的條件..請幫助我需要T2作為最后一列。
SELECT a.RouteCode,
SUM(CASE WHEN b.ScheduledFlag = '1' THEN 1 ELSE 0 END) AS T1,
SUM(CASE WHEN b.ScheduledFlag = '0' THEN 1 ELSE 0 END) AS T2
FROM Routes a inner join CustomerVisits as b on a.RouteCode = b.RouteCode
WHERE b.RouteStartDate = '12/15/2011'
and a.DepotCode = '6'
group by a.RouteCode
請注意,根據數據庫連接的區域設置,您的日期格式字符串可能不明確。 使用類似ODBC規范的區域設置安全日期格式( yyyy-mm-dd hh:mi:ss
)
一種方法是分別創建每個計數查詢,然后從每個計數查詢執行左連接,這樣如果兩個計數表中都沒有匹配,則不會過濾結果。
SELECT q1.routecode,
t1,
t2
FROM routes
LEFT JOIN (SELECT routecode,
COUNT(routecode) AS t1
FROM customervisits
WHERE ( routecode IN ( '701', '702', '704', '703', '705' ) )
AND routestartdate = '12/15/2011'
AND schelduledflag = '1'
GROUP BY routecode) AS q1
ON routes.routecode = q1.routecode
LEFT JOIN (SELECT routecode,
COUNT(routecode) AS t2
FROM customervisits
WHERE ( routecode IN ( '701', '702', '704', '703', '705' ) )
AND routestartdate = '12/15/2011'
AND schelduledflag = '0'
GROUP BY routecode) AS q2
ON routes.routecode = q2.routecode
WHERE a.depotcode = '6' and (t1 is not null or t2 is not null);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.