शीर्षक यह सब कहता है, मैं SQL सर्वर में किसी खंड में विंडो किए गए फ़ंक्शन का उपयोग क्यों नहीं कर सकता?क्यों खंडों में कोई खिड़कीदार कार्य नहीं है?
इस क्वेरी सही समझ में आता है:
select id, sales_person_id, product_type, product_id, sale_amount
from Sales_Log
where 1 = row_number() over(partition by sales_person_id, product_type, product_id order by sale_amount desc)
लेकिन यह काम नहीं करता। क्या सीटीई/सबक्वायरी से बेहतर तरीका है?
संपादित
क्या अपने इस लायक एक CTE के साथ क्वेरी है:
with Best_Sales as (
select id, sales_person_id, product_type, product_id, sale_amount, row_number() over (partition by sales_person_id, product_type, product_id order by sales_amount desc) rank
from Sales_log
)
select id, sales_person_id, product_type, product_id, sale_amount
from Best_Sales
where rank = 1
संपादित
एक सबक्वेरी के साथ दिखा जवाब के लिए +1, लेकिन वास्तव में मैं मैं खंडों में खिड़की के कार्यों का उपयोग करने में सक्षम नहीं होने के पीछे तर्क की तलाश कर रहा हूं।
घुमावदार कार्य गैर-संबंधपरक परत का हिस्सा हैं (क्योंकि संबंध सिद्धांत आदेशित डेटा से निपटता नहीं है); इस प्रकार उनका मूल्यांकन अन्य सभी के बाद किया जाता है। प्रश्न का उत्तर देने के लिए –