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

जहां क्लॉज में कोई खिड़की वाला कार्य क्यों नहीं है?

<ब्लॉकक्वॉट>

मैं SQL सर्वर के जहाँ क्लॉज़ में विंडो वाले फ़ंक्शन का उपयोग क्यों नहीं कर सकता?

एक उत्तर, हालांकि विशेष रूप से जानकारीपूर्ण नहीं है, क्योंकि युक्ति कहती है कि आप नहीं कर सकते।

इत्ज़िक बेन गण द्वारा लेख देखें - तार्किक क्वेरी प्रसंस्करण:यह क्या है और इसका आपके लिए क्या अर्थ है और विशेष रूप से यहां की छवि। विंडो फ़ंक्शन का मूल्यांकन SELECT . के समय किया जाता है सभी WHERE . के बाद बचे हुए परिणाम सेट पर /JOIN /GROUP BY /HAVING खंड निपटाए गए हैं (चरण 5.1) ।

<ब्लॉकक्वॉट>

वास्तव में मैं जहां क्लॉज में विंडोिंग फ़ंक्शंस का उपयोग करने में सक्षम नहीं होने के पीछे तर्क की तलाश कर रहा हूं।

कारण है कि उन्हें WHERE . में अनुमति नहीं है खंड यह है कि यह अस्पष्टता पैदा करेगा। विंडो फ़ंक्शंस का उपयोग करके उच्च-प्रदर्शन टी-एसक्यूएल से इत्ज़िक बेन गण का उदाहरण चोरी करना (p.25)

मान लीजिए आपकी टेबल

. थी
CREATE TABLE T1
(
col1 CHAR(1) PRIMARY KEY
)

INSERT INTO T1 VALUES('A'),('B'),('C'),('D'),('E'),('F')

और आपकी क्वेरी

SELECT col1
FROM T1
WHERE ROW_NUMBER() OVER (ORDER BY col1) <= 3
AND col1 > 'B'

सही परिणाम क्या होगा? क्या आप उम्मीद करेंगे कि col1 > 'B' विधेय पंक्ति क्रमांकन से पहले या बाद में चला?



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर TempDB मॉनिटरिंग डायनेमिक मैनेजमेंट व्यू (DMV) का उपयोग करके

  2. ट्री टेबल के लिए Sql क्वेरी

  3. किसी दृश्य के अंतर्निहित कॉलम उसके परिणाम सेट के आधार पर प्राप्त करें

  4. एक्सएमएलएनएस के साथ ओपनएक्सएमएल:डीटी

  5. मैं टी-एसक्यूएल में अल्पविराम के साथ किसी संख्या को कैसे प्रारूपित करूं?