एक्सेस 2010 एसक्यूएल - SELECT TOP subquery फ़ील्ड पर कहां उपयोग करें

मैं चाहता हूं कि यह प्रश्न 2012 में उन कंपनियों के खर्च को बताने के लिए जो 2013 में शीर्ष 10 व्ययकर्ता थे!

SELECT [Company], 
       Sum([SPENDING])
FROM   [Data]
WHERE  [Company] IN (
                     SELECT TOP 10 [Company]
                     FROM          [Data]
                     WHERE         [Year] IN ("2013")
                     GROUP BY      Company
                     ORDER BY      Sum([SPENDING]) DESC
                     )
       AND [Year] IN ("2012")
GROUP BY Company
;

जब मैं इसे चलाने की कोशिश करता हूं, मुझे कोई त्रुटि नहीं मिलती है, लेकिन एक्सेस कहती है कि यह "चल रही क्वेरी" है और कभी खत्म नहीं होती है। डेटा का आकार समस्या नहीं है।

This is the closest example I found, but it doesn't really give light to the answer: MS Access - WHERE IN works, but WHERE NOT IN fails

3

1 उत्तर

मुझे संदेह है कि यह एक्सेस के अनुकूलक की बस एक सीमा है। इसके बजाए इसे इस तरह से आजमाएं:

SELECT d.[Company], 
       Sum(d.[SPENDING])
FROM   [Data] As d
INNER JOIN    (
                     SELECT TOP 10 [Company]
                     FROM          [Data]
                     WHERE         [Year] IN ("2013")
                     GROUP BY      Company
                     ORDER BY      Sum([SPENDING]) DESC
              ) As t  ON  t.Company = d.Company
WHERE d.[Year] IN ("2012")
GROUP BY d.Company
4
जोड़ा
हाय बैरी, नए रूप के लिए बहुत बहुत धन्यवाद। जब मैं इसे एक्सेस में चलाने की कोशिश करता हूं, तो मुझे "खंड से सिंटेक्स त्रुटि" मिलती है और मैं इसे ठीक नहीं कर सकता
जोड़ा लेखक JRob, स्रोत
बहुत बढ़िया, यह काम करता है, धन्यवाद :)
जोड़ा लेखक JRob, स्रोत
इसमें लगभग 1 सेकंड लगते हैं
जोड़ा लेखक JRob, स्रोत
हाँ, क्षमा करें। मैं भूल गया कि एक्सेस SQL ​​सर्वर के रूप में कई संक्षेपों को बर्दाश्त नहीं करता है। अब तय किया जाना चाहिए।
जोड़ा लेखक RBarryYoung, स्रोत
@JRob यह कितना समय लगता है?
जोड़ा लेखक RBarryYoung, स्रोत
@ जेआरओबी कूल! हमारी जानकारी में लाने के लिये धन्यवाद।
जोड़ा लेखक RBarryYoung, स्रोत