2016-03-07 7 views
5

मेरे पास SQL ​​समस्या है। मैं गिलहरी एसक्यूएल क्लाइंट का उपयोग कर ओरेकल 11 पर एक स्क्रिप्ट चला रहा हूं। मेरी समस्या का एक सरल उदाहरण।एसक्यूएल - मौजूदा डेटा का अधिकतम मूल्य उसी डेटा सेट में अकेले स्टैंड के रूप में प्राप्त करें

ID Date 
1 2016-01-01 
2 2016-01-02 
3 2016-01-03 
4 2016-01-04 
5 2016-01-05 
6 2016-01-06 
7 2016-01-07 
8 2016-01-08 
9 2016-01-09 
10 2016-01-10 

मैं एक नया क्षेत्र है कि एक अकेले खड़े क्षेत्र के रूप में अधिकतम तारीख मान देता है बनाना चाहते हैं: मैं निम्नलिखित डेटा है, मेरी कुल लिपि की जटिलता के कारण

ID Date  Max_Date 
1 2016-01-01 2016-01-10 
2 2016-01-02 2016-01-10 
3 2016-01-03 2016-01-10 
4 2016-01-04 2016-01-10 
5 2016-01-05 2016-01-10 
6 2016-01-06 2016-01-10 
7 2016-01-07 2016-01-10 
8 2016-01-08 2016-01-10 
9 2016-01-09 2016-01-10 
10 2016-01-10 2016-01-10 

मैं उप-क्वेरी का उपयोग करके ऐसा नहीं कर सकते हैं। एक सरल सब-क्वेरी समाधान ऐसा दिखाई दे सकता है।

SELECT a.ID, 
     a.DATE, 
     b.MAX_DATE 
    FROM TABLE1,(SELECT ID, 
         max(DATE) MAX_DATE 
       FROM TABLE1 
       ) b 
WHERE 1=1 

हालांकि मेरे "तालिका 1" मान कुछ परिभाषित मानकों के साथ एक बहुत लंबी लिपि है। अगर मैं उपरोक्त उप प्रश्न में इस स्क्रिप्ट को प्रतिलिपि बनाना चाहता हूं, तो मुझे रनटाइम पर अपने पैरामीटर को परिभाषित करते समय डबल अप करना होगा।

तो मुझे आश्चर्य है, क्या एक तालिका में मौजूदा फ़ील्ड लेना संभव है और एक अतिरिक्त फ़ील्ड बनाना है जो सभी पंक्तियों के लिए मौजूदा फ़ील्ड के अधिकतम मूल्य को दोहराता है?

धन्यवाद

उत्तर

5

एक खिड़की समारोह का उपयोग करें:

SELECT a.ID, 
     a.DATE, 
     max(a.date) over() as max_date 
FROM table1 a 
+0

बिल्कुल सही, धन्यवाद! –

संबंधित मुद्दे

 संबंधित मुद्दे