- यह क्वेरी वर्तमान और पिछले महीने के डेटा को नीचे की स्थिति से खींचने के लिए है
SELECT
COL1 ||''||
COL2 ||''||
COL2 ||''||
FROM TB1 , TB2 , TB3
WHERE TB1.TRAN_YEAR=2020 AND TB1.PERIOD=(3,2)
AND TB2.TRAN_YEAR=2020 AND TB2.PERIOD= (3,2)
- यूनियन द्वारा वर्तमान और पूर्व माह डेटा खींचने के लिए यह प्रश्न
SELECT
COL1 ||''||
COL2 ||''||
COL2 ||''||
FROM TB1 , TB2 , TB3
WHERE TB1.TRAN_YEAR=2020 AND TB1.PERIOD=(3)
AND TB2.TRAN_YEAR=2020 AND TB2.PERIOD= (3)
UNION
SELECT
COL1 ||''||
COL2 ||''||
COL2 ||''||
FROM TB1 , TB2 , TB3
WHERE TB1.TRAN_YEAR=2020 AND TB1.PERIOD=(2)
AND TB2.TRAN_YEAR=2020 AND TB2.PERIOD= (2)
परिणाम सेट बेमेल है, मुझे बताएं कि समान रिकॉर्ड गणना करने के लिए पहली क्वेरी में क्या बदलाव की आवश्यकता है। 12 महीने के डेटा को वापस खींचने के लिए नई क्वेरी के साथ आने की आवश्यकता है और 12 महीने के लिए UNION जोड़ना अजीब लगता है।
2 जवाब
आपको अपनी अवधि के अनुसार परिणामों में शामिल होने की आवश्यकता है।
SELECT
COL1 ||''||
COL2 ||''||
COL2 ||''||
FROM TB1 , TB2 , TB3
WHERE TB1.TRAN_YEAR=2020 AND TB1.PERIOD in (3,2) -- use in to check, that value is in list
AND TB2.TRAN_YEAR=2020
AND (TB1.PERIOD is null or TB2.PERIOD is null or TB1.PERIOD = TB2.PERIOD)
TB1.PERIOD=3 और TB2.PERIOD=2 या TB1.PERIOD=2 और TB2.PERIOD=3 के लिए आपकी पहली क्वेरी रिटर्न डेटा - यह बेमेल है। उसकी कोशिश करो:
WHERE
TB1.TRAN_YEAR=2020 AND TB2.TRAN_YEAR=2020
AND ((TB1.PERIOD=3 AND TB2.PERIOD=3) OR (TB1.PERIOD=2 AND TB2.PERIOD=2))
या अधिक स्पष्ट करें:
WHERE
TB1.TRAN_YEAR=2020 AND TB2.TRAN_YEAR=2020
AND TB1.PERIOD=TB2.PERIOD and TB1.PERIOD in (2, 3)
संबंधित सवाल
नए सवाल
oracle
ओरेकल डेटाबेस ओरेकल कॉर्पोरेशन द्वारा बनाया गया एक मल्टी-मॉडल डेटाबेस मैनेजमेंट सिस्टम है। Oracle, जैसे जावा और MySQL के स्वामित्व वाले अन्य उत्पादों के लिए इस टैग का उपयोग न करें।
COL2||''||
है, जिसमें कॉन्सटेनेशन ऑपरेटर के दाईं ओर कोई अभिव्यक्ति नहीं है और=(3,2)
ORA-01797: this operator must be followed by ANY or ALL
देगा।