根據A表的條件COUNT(a),根據B表的條件COUNT(b),且兩個條件無交集,如何寫?


SELECT 
COUNT(CASE WHEN ds.XKDM='010000' AND ds.LWPSZJ='是' THEN 1 ELSE NULL END) AS LWPSZJCount,
COUNT(CASE WHEN lw.XKDM='010000' AND lw.YJSFLM='1' THEN 1 ELSE NULL END) AS LWSSCount,
COUNT(CASE WHEN lw.XKDM='010000' AND lw.YJSFLM='2' THEN 1 ELSE NULL END) AS LWBSCount
FROM T_DS ds, T_LW lw
inner join T_YJSFL yjsfl on lw.YJSFLM=yjsfl.YJSFLM

結果是錯的,可是不知道該怎么寫了,求高手

7 个解决方案

#1


給測試數據和你想要的結果

建議先連接查詢,再來這樣統計

#2


這么說吧,現在我的目的就是把
SELECT COUNT(*) AS LWPSZJCount FROM T_DS WHERE XKDM='010000' AND LWPSZJ='是'
以及
SELECT COUNT(*) AS LWCount FROM T_LW WHERE XKDM='010000' AND YJSFLM='1' AS LWSSCount 
以及 
SELECT COUNT(*) AS LWCount FROM T_LW WHERE XKDM='010000' AND YJSFLM='2' AS LWBSCount
合到一起,group by 在一起
有個關鍵的事情,T_DS和其他兩個表沒有任何聯系
引用樓主  的回復:
SELECT 
COUNT(CASE WHEN ds.XKDM='010000' AND ds.LWPSZJ='是' THEN 1 ELSE NULL END) AS LWPSZJCount,
COUNT(CASE WHEN lw.XKDM='010000' AND lw.YJSFLM='1' THEN 1 ELSE NULL END) AS LWSSCount,
COUNT(CASE WH……

#3


union all

#4


先count完在inner join

#5



select * from 
 (select *,COUNT(CASE WHEN ds.XKDM='010000' AND ds.LWPSZJ='是' THEN 1 ELSE NULL END) AS LWPSZJCount)
 t1
 ,
 (select *,COUNT(CASE WHEN lw.XKDM='010000' AND lw.YJSFLM='1' THEN 1 ELSE NULL END) AS LWSSCount,
COUNT(CASE WHEN lw.XKDM='010000' AND lw.YJSFLM='2' THEN 1 ELSE NULL END) AS LWBSCount)
 t2
 where 
t1.YJSFLM=t2.YJSFLM

#6


多謝各位,已經解決了

#7


使用union和case when 語句可以完成。

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com