मेरे पास कई जुड़ने के साथ एक प्रश्न है और मैं इससे नवीनतम क्लाइंट रिकॉर्ड चुनने का प्रयास कर रहा हूं। मेरे पास यह प्रश्न है लेकिन यह मुझे क्लाइंट के सभी रिकॉर्ड दे रहा है:


EDIT:

SELECT ca.CA_ID, ca.CLIENT_ID, ca.CA_STATUS_TYPE, ca.CREATED_BY, MAX(ca.CREATED_DATE), ca.UPDATED_BY, MAX(ca.UPDATED_DATE), ca.CA_REFERENCE_NUMBER, 
cl.SOURCE_SYSTEM_CODE, catchment.EST_CATCHMENT_AREA,  catchment.SERVICE_PROVIDER_NAME, sds.SDS_NAME, sds.SDS_ADDRESS_TEXT, u.CA_USER_TYPE "USER TYPE",

CASE WHEN ca.REFERRED_IND = 1 THEN 'REFERRED' ELSE 'NOT REFERRED' END REFER_TYPE
FROM CA ca
JOIN(
     SELECT TOP 1
     CLIENT_ID, MAX(CREATED_DATE) CREATED_DATE
     FROM CA
     GROUP BY
     CLIENT_ID
     ORDER BY
     MAX(CREATED_DATE)
     ) maxclient
     ON maxclient.CLIENT_ID = ca.CLIENT_ID
     AND maxclient.CREATED_DATE = ca.CREATED_DATE
LEFT JOIN CLIENT cl 
ON ca.CLIENT_ID = cl.CLIENT_ID 
LEFT JOIN (
    SELECT * FROM CATCHMENT_AREA catchment LEFT JOIN SERVICE_PROVIDER sp ON sp.SERVICE_PROVIDER_ID = catchment.SERVICE_PROVIDER_ID
  ) catchment ON ca.CATCHMENT_ID = catchment.CATCHMENT_ID
LEFT JOIN SERVICE_DELIVERY_SITE sds 
ON ca.SERVICE_DELIVERY_SITE_ID = sds.SERVICE_DELIVERY_SITE_ID 
LEFT JOIN USER u 
ON ca.CREATED_BY = u.CA_USER_ID 
WHERE (ca.CREATED_DATE) BETWEEN TO_DATE('2021-01-04', 'yyyy-mm-dd') AND TO_DATE('2021-01-08', 'yyyy-mm-dd')
1
comp_user 18 जिंदा 2021, 19:41

2 जवाब

सबसे बढ़िया उत्तर

Oracle में शीर्ष खंड नहीं है:

यदि आप सभी est_ca_client_id से अधिकतम निर्मित तिथि चाहते हैं तो आप करते हैं:

select est_ca_client_id, max(created_date) created_date
  from ca_cdr.est_ca
  group by est_ca_client_id

लेकिन अगर आप create_date से अंतिम est_ca_client_id चाहते हैं, तो यह मानते हुए कि आपके पास उसी सेकंड में क्लाइंट नहीं हैं, आप कुछ ऐसा कर सकते हैं:

select est_ca_client_id
  from ca_cdr.est_ca
 where created_date = (select max(created_date)
                         from ca_cdr.est_ca)
1
Heitor 19 जिंदा 2021, 01:16
धन्यवाद, बस सोच रहा था कि अधिकतम बनाई गई तारीख और नवीनतम बनाई गई तारीख में क्या अंतर है? क्या वे दोनों नवीनतम ग्राहक परिणाम प्रदान नहीं करते हैं?
 – 
comp_user
20 जिंदा 2021, 19:10

यहां बताया गया है कि आप प्रत्येक क्लाइंट के लिए नवीनतम रिकॉर्ड कैसे प्राप्त करते हैं:

SELECT
    ca.CA_ID
    , ca.CLIENT_ID
    , ca.STREAM
    , ca.CA_STATUS_TYPE_CODE
    , ca.CREATED_BY
    , MAX(ca.CREATED_DATE)
    , ca.UPDATED_BY
    , MAX(ca.UPDATED_DATE)
    , ca.REFERENCE_NUMBER
    , ca.CATCHMENT_AREA_ID
    , ca.SERVICE_DELIVERY_SITE_ID
    , cl.SOURCE_SYSTEM
    , catchment.EST_CATCHMENT_AREA
    , catchment.SERVICE_PROVIDER_NAME
    , sds.SDS_NAME
    , sds.SDS_ADDRESS_TEXT
    , u.CA_USER_TYPE "USER TYPE"
    , CASE
          WHEN ca.REFERRED_IND = 1 THEN 'REFERRED'
          ELSE 'NOT REFERRED'
      END            REFER_TYPE
FROM
    ca_table                        ca
    JOIN
        (
            SELECT TOP 1
                CLIENT_ID
                , MAX(CREATED_DATE) CREATED_DATE
            FROM
                ca_table
            GROUP BY
                CLIENT_ID
            ORDER BY
                MAX(CREATED_DATE)
        )                           maxclient
        ON maxclient.CLIENT_ID = ca.CLIENT_ID
           AND maxclient.CREATED_DATE = ca.CREATED_DATE
    LEFT JOIN client_table          cl
        ON ca.CLIENT_ID = cl.CLIENT_ID
    LEFT JOIN
        (
            SELECT
                *
            FROM
                CA_CATCHMENT_AREA             catchment
                LEFT JOIN CA_SERVICE_PROVIDER sp
                    ON sp.SERVICE_PROVIDER_ID = catchment.SERVICE_PROVIDER_ID
        )                           catchment
        ON ca.CATCHMENT_AREA_ID = catchment.CATCHMENT_AREA_ID
    LEFT JOIN SERVICE_DELIVERY_SITE sds
        ON ca.SERVICE_DELIVERY_SITE_ID = sds.SERVICE_DELIVERY_SITE_ID
    LEFT JOIN user_table            u
        ON ca.CREATED_BY = u.CA_USER_ID
WHERE
    ca.CREATED_DATE BETWEEN TO_DATE('2021-01-04', 'yyyy-mm-dd') AND TO_DATE('2021-01-08', 'yyyy-mm-dd')

यदि आपको अंतिम रिकॉर्ड चुनने से पहले तिथि को फ़िल्टर करने की आवश्यकता है, तो आपको 'मैक्सक्लाइंट' की सबक्वायरी के अंदर जहां क्लॉज को स्थानांतरित करना होगा

0
eshirvana 18 जिंदा 2021, 19:58
नमस्ते, आपकी मदद के लिए धन्यवाद, क्वेरी मुझे कुछ त्रुटियां दे रही है, मैंने इसे अपने डेटाबेस में कॉलम नामों के अनुरूप होने के लिए संशोधित किया, बस आपको यह दिखाना चाहता था कि मेरे पास यही है, क्या कुछ भी है जो मैं गलत कर रहा हूं :
 – 
ops_mltsd
18 जिंदा 2021, 21:34
मैंने कुछ गलत किया होगा, आपको क्या त्रुटि संदेश मिल रहा है?
 – 
eshirvana
18 जिंदा 2021, 21:35
यह त्रुटि संदेश है: SQL त्रुटि [923] [42000]: ORA-00923: कीवर्ड से नहीं मिला जहाँ अपेक्षित हो¶
 – 
ops_mltsd
18 जिंदा 2021, 21:38
मैंने ऊपर दी गई क्वेरी को भी संपादित किया है; बीटीडब्ल्यू, मैं वास्तव में इस पर आपकी मदद की सराहना करता हूं!
 – 
ops_mltsd
18 जिंदा 2021, 21:38
ऐसा लगता है कि आपने कथन से पहले कुछ किया है, इसे मेरे कोड से संबंधित नहीं कर सकते, वैसे ऐसा लगता है जैसे आप oracle का उपयोग कर रहे हैं, आपने प्रश्न को MySQL के रूप में क्यों टैग किया
 – 
eshirvana
18 जिंदा 2021, 21:41