Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

इनलाइन सेलेक्ट स्टेटमेंट के साथ सबक्वेरी के साथ क्वेरी में इनर जॉइन जोड़ना

तालिकाओं को परिभाषित करने वाले किसी भी डीडीएल विवरण के बिना परीक्षण करना मुश्किल है लेकिन:

  1. आप स्ट्रिंग्स का उपयोग करके तिथियों की तुलना कर रहे हैं - Oracle संभवत:NLS_DATE_FORMAT के मान का उपयोग करके किसी तिथि पर एक अंतर्निहित रूपांतरण कर रहा है। सत्र पैरामीटर (जो उम्मीद से DD-MON-YY . है ) लेकिन अगर यह कभी बदलता है तो यह क्वेरी को तोड़ देगा (और क्वेरी नहीं बदलेगी इसलिए यह डीबग करने के लिए दर्द होगा)। दिनांक के रूप में स्ट्रिंग्स का उपयोग करना बंद करें और दिनांक शाब्दिक का उपयोग करें - अर्थात DATE '2016-01-01'
  2. आपके पास पहला HAVING . है GROUP BY . से पहले क्लॉज खंड - उन्हें चारों ओर स्वैप करें।
  3. आप एक लीगेसी कॉमा जॉइन और एएनएसआई जॉइन भी मिला रहे हैं - कॉमा जॉइन को INNER JOIN से बदलें और शामिल होने की स्थिति को WHERE . से बाहर ले जाएं खंड।
  4. A.TRADING_DWKEY||A.RM_SM_USER_CODE द्वारा समूहित करना अक्षम है। आपके पास पहले से ही A.TRADING_DWKEY है GROUP BY . में से एक के रूप में शर्तें इसलिए स्ट्रिंग्स को संयोजित न करें बस दूसरे कॉलम को GROUP BY में शामिल करें खंड।

कुछ इस तरह:

Select TRADING_DWKEY,
       RM_SM_NAME,
       FIRST_TRADE,
       'New Footprint' Status,
       Null Q4Vol,
       CQVol 
From (
  Select A.TRADING_DWKEY,
         q.RM_SM_NAME,
         B.FIRST_TRADE,
         SUM(A.RISK_AMOUNT_ADJ)/1000000 CQVol 
  from   FACT_TRADE_ROLLUP A
         INNER JOIN
         ( SELECT   TRADING_DWKEY,
                    MIN(FIRST_TRADE_DATE) FIRST_TRADE  
           FROM     ACCOUNT_FIRST_LAST_TRADE_DATES
           GROUP BY TRADING_DWKEY
           HAVING   MIN(FIRST_TRADE_DATE)>= trunc(sysdate-1,'Y')
         ) B
         ON ( A.TRADING_DWKEY=B.TRADING_DWKEY )
         INNER JOIN REF_RM_SM_REGION q
         ON ( q.RM_SM_USER_CODE = A.RM_SM_USER_CODE )
  WHERE A.DATE_KEY >= DATE '2016-01-01'
  AND   ( (    A.PRODUCT_DWKEY IN('RT')
           AND A.Account_Type='Customer'
          )
        OR A.PRODUCT_DWKEY IN('OB','BS','MM')
        )
  AND   A.Role = 'SM' 
  GROUP BY A.RM_SM_USER_CODE,
           A.TRADING_DWKEY,
           q.RM_SM_NAME,
           B.FIRST_TRADE
  HAVING SUM(A.RISK_AMOUNT_ADJ)>=20000000
);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle को last_day फ़ंक्शन को H2 डेटाबेस के साथ संगत बनाएं

  2. तालिका के साथ किसी क्वेरी को कैसे चुनें और उसमें शामिल हों

  3. Oracle में स्ट्रिंग्स की तुलना करें

  4. oracle sql में आज तक का चरित्र

  5. REFs की तालिका के लिए SCOPE