[英]How do I avoid sub-query repetitions in SQL?
我想要用途A的最低價格和用途B的最高價格,而且我還按區域對物品進行分組。
SELECT ZONE, MIN_PRICE, MAX_PRICE --,LEFT_ZONE
FROM
(SELECT MIN(PRICE) AS MIN_PRICE , ZONE AS LEFT_ZONE
FROM MYTABLE
WHERE PURPOSE = 'A'
AND SOMETHING = 'SOMEVALUE'
GROUP BY ZONE
)
FULL OUTER JOIN
(SELECT MAX(PRICE) AS MAX_PRICE, ZONE_CD
FROM MYTABLE
WHERE PURPOSE = 'B'
AND SOMETHING = 'SOMEVALUE'
GROUP BY ZONE
)
ON LEFT_ZONE = ZONE
該查詢提供了我想要的輸出,但是由於兩個原因,我不喜歡它:
1)我想要
FROM MYTABLE
WHERE SOMETHING = 'SOMEVALUE'
只能被調用一次。
2)當行來自我的完整外部聯接中的右表時,我得到ZONE null。
我該如何解決這些問題。
查詢中還有其他問題嗎?
您是否嘗試過使用CASE
表達式來獲取此信息:
select zone,
min(case when PURPOSE = 'A' then price end) min_price,
max(case when PURPOSE = 'B' then price end) max_price
from MYTABLE
where SOMETHING = 'SOMEVALUE'
group by zone
嘗試這個:
SELECT
ZONE,
SUM (CASE WHEN PURPOSE = 'A' THEN MIN(PRICE) ELSE 0 END) AS MIN_PRICE,
SUM (CASE WHEN PURPOSE = 'B' THEN MAX(PRICE) ELSE 0 END) AS MAX_PRICE
FROM
MYTABLE
WHERE
SOMETHING = 'SOMEVALUE'
GROUP BY
ZONE
或任何小的變化
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.