[英]SQL DB2 count based on previous case
有人知道基於先前案例陳述的計數解決方案嗎?
這是我在查詢中的意思, 無法正常使用
SELECT
CASE
WHEN field1 IN ('a','b','c') THEN 'MATCH1'
WHEN field2 IN ('d','e','f') THEN 'MATCH2'
ELSE 'NOMATCH' END AS MATCHFIELD,
(SELECT COUNT(*) FROM TABLE2 WHERE field3=MATCHFIELD) AS SUBCOUNT
FROM TABLE1
我在db2 v9.X上。 我已經tryed HAVING,但無法找到一個可行的解決方案
問候
將SELECT
與case
表達式包裝在派生表中:
select MATCHFIELD,
(SELECT COUNT(*) FROM TABLE2 WHERE field3=MATCHFIELD) AS SUBCOUNTSELECT
from
(
select
CASE
WHEN field1 IN ('a','b','c') THEN 'MATCH1'
WHEN field2 IN ('d','e','f') THEN 'MATCH2'
ELSE 'NOMATCH'
END AS MATCHFIELD
FROM TABLE1
) dt
我會用JOIN
和GROUP BY
SELECT MATCHFIELD, COUNT(*)
FROM TABLE2
JOIN
(
SELECT
CASE
WHEN field1 IN ('a','b','c') THEN 'MATCH1'
WHEN field2 IN ('d','e','f') THEN 'MATCH2'
ELSE 'NOMATCH' END AS MATCHFIELD
FROM TABLE1
) t ON field3=t.MATCHFIELD
GROUP BY MATCHFIELD
嘗試這個 :
with tmp as (
SELECT CASE
WHEN field1 IN ('a','b','c') THEN 'MATCH1'
WHEN field2 IN ('d','e','f') THEN 'MATCH2'
ELSE 'NOMATCH' END AS MATCHFIELD
FROM TABLE1
)
select tmp.*, (SELECT COUNT(*) FROM TABLE2 WHERE field3=MATCHFIELD) AS SUBCOUNT
from tmp
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.