मेरे प्रश्न को सरल बनाने के लिए, मान लीजिए कि मेरे पास तिमाही तिथियों और सुरक्षा संख्याओं की सुरक्षा है।सुरक्षा द्वारा 4 क्वार्टर मूविंग एवरेज की गणना
month_end_date, आईडी, बिक्री
मैं आईडी प्रति बिक्री के 4 तिमाही चलती औसत गणना करनी है। मैं निम्नलिखित करने की कोशिश की:
-- CALCULATE FOUR QUARTER AVERAGES
-- CREATE INDEX OF DATES
SELECT *, date_idx=RANK() OVER(PARTITION BY ID ORDER BY month_end_date)
INTO #Temp_Date_Index
FROM #Temp_industrials
GO
CREATE INDEX idx_1 on #Temp_Date_Index(ID, date_idx)
GO
-- CALCULATE MOVING AVERAGE
SELECT MAX(month_end_date), ID, Sales_avg=AVG(Sales)
INTO #Temp_4Q_Avgs
FROM #Temp_Date_Index
WHERE date_idx>=4 AND (date_idx BETWEEN date_idx AND (date_idx-4))
GROUP BY ID
दिनांकों के एक सूचकांक बनाने के लिए पहला कदम ठीक काम किया लेकिन "की गणना बढ़ औसत" हिस्सा मुझे एक त्रुटि "एक वस्तु या स्तंभ नाम है या खाली है" देता है। अगर मैं SELECT लाइन से MAX(month_end_date)
निकालता हूं तो यह त्रुटि के बिना चलता है लेकिन मुझे एक खाली तालिका परिणाम देता है।
शायद मेरा दृष्टिकोण मौलिक रूप से त्रुटिपूर्ण है।
किसी भी मदद के लिए अग्रिम धन्यवाद।
इसके अलावा एक सबक्वेरी उपयोग करने की कोशिश:
SELECT end_of_period=MAX(month_end_date), ID,
op_inc_avg=AVG(
SELECT r.Sales
FROM #Temp_Date_Index r
WHERE r.date_idx BETWEEN l.date_idx AND (l.date_idx-3)
)
#Temp_Date_Index एल से कहां r.date_idx> = 4 ग्रुप आईडी
द्वारा लेकिन मैं संदेश 156
हो रही है, स्तर 15, राज्य 1, रेखा 3 कीवर्ड 'चयन' के पास गलत वाक्यविन्यास। संदेश 102, स्तर 15, राज्य 1, रेखा 6 ') के पास गलत वाक्यविन्यास।
'SELECT MAX (month_end_date)' जैसे 'AS "maxValue" ' – Nico
के बाद कॉलम नाम को परिभाषित करें, आपको' MAX (month_end_date) 'उपनाम देना होगा। यद्यपि यह आपको अभी भी एक खाली तालिका देगा परिणामस्वरूप – Lamak
SQL सर्वर का कौन सा संस्करण आप उपयोग कर रहे हैं? –