我正嘗試使用簡單的查詢爲我的報告輸出一些必要的行以提取。這是查詢: -當我在Oracle中使用CASE WHEN表達式時發生額外的空行
SELECT DISTINCT Z.ITEMDESC, X.NMCODDES AS CODE
FROM NMCODMAS X, NMITEMAS Y, NMSALREC Z
WHERE
X.NMHRDCDE='PKZ'
AND Y.FINISHGD='Y'
AND X.COMPCODE=Z.COMPCODE
AND Y.COMPCODE=Z.COMPCODE
AND X.COMPCODE=Y.COMPCODE
AND Y.USERDEF1=X.NMSOFCDE
AND Y.ITEMCODE=Z.ITEMCODE
AND Z.DOCTDATE BETWEEN NVL(:P11,Z.DOCTDATE) AND NVL(:P12,Z.DOCTDATE)
但因爲某些原因,我不能使用X.NMHRDCDE='PKZ'
在。所以,我只是在使用CASE WHEN Expression時使用X.NMHRDCDE='PKZ'
。就像那樣: -
SELECT DISTINCT Z.ITEMDESC,
CASE
WHEN X.NMHRDCDE='PKZ'
THEN X.NMCODDES
END AS CODE
FROM NMCODMAS X, NMITEMAS Y, NMSALREC Z
WHERE
-- X.NMHRDCDE='PKZ'
Y.FINISHGD='Y'
AND X.COMPCODE=Z.COMPCODE
AND Y.COMPCODE=Z.COMPCODE
AND X.COMPCODE=Y.COMPCODE
AND Y.USERDEF1=X.NMSOFCDE
AND Y.ITEMCODE=Z.ITEMCODE
AND Z.DOCTDATE BETWEEN NVL(:P11,Z.DOCTDATE) AND NVL(:P12,Z.DOCTDATE)
在這種情況下,每行都被複制了一個NULL NMCODDES字段。檢查輸出 - output
我不明白爲什麼每個項目都有一個額外的空行。在上面的代碼中使用ELSE
並沒有什麼區別。因爲我可以保證在我的數據庫中每個項目都有獨特的NMHRDCDE
。所以,即使在使用ELSE
的情況下也不能解決我的問題。
有人可以幫我指出問題嗎?
是的..它的工作。非常感謝。還有一件事...可以這種格式被用作嵌套?? –
@ W.Jack抱歉,但我不明白。你是什麼意思的格式?你的意思是嵌套的分析函數其他查詢或其他功能? – Kacper
沒有..其實我的意思是使用'select * from(/ * YOUR QUERY * /)where code is not null;'在另一個類似的查詢中嵌套... –