0 के अंदर चर को प्रारंभ करने के लिए सीटीई का उपयोग करें, मुझे एक दृश्य बनाने की आवश्यकता है - यह पांच यूनियन सभी बयान द्वारा रचित है।टी-एसक्यूएल
उदाहरण के लिए::
SELECT RecordName
,CASE
WHEN RecordDate > DATEADD(WEEK,-1,GETUTCDATE()) THEN 'This week'
END
UNION ALL
SELECT RecordName
,CASE
WHEN RecordDate > DATEADD(WEEK,-2,GETUTCDATE()) THEN 'Previos week'
END
SELECT RecordName
,CASE
WHEN RecordDate > DATEADD(Year,-1,GETUTCDATE()) THEN 'Year ago'
END
तो मैं एक धुरी दृश्य का उपयोग कर बनाने हूँ प्रत्येक कथन के बीच अंतर यह है कि डेटा अलग अवधि के द्वारा फिल्टर है।
वैसे भी, "तिथि" स्थिति अधिक जटिल तरीके से गणना की जाती है। मैं GETUTCDATE() फ़ंक्शन का भी उपयोग कर रहा हूं और यह किसी भी मिलीसेकंद के अलग-अलग मूल्य को वापस कर देगा।
यही कारण है कि मैं सभी दिनांक स्थिति चर शुरू करने के लिए या सीटीई में एक बार गणना करने के लिए सीटीई अभिव्यक्ति का उपयोग करना चाहता हूं, और उसके बाद चयन-यूनियन खंड में इस दिनांक की स्थिति का उपयोग करना चाहता हूं।
समस्या यह है कि, मैं नीचे दिए गए चयन कथन के साथ सीटीई से जानकारी में शामिल नहीं हो पा रहा हूं और जब मैं सीधे दिनांक शर्तों (बिना शामिल किए) का उपयोग करने का प्रयास करता हूं तो यह काम नहीं कर रहा है ("त्रुटि - अमान्य कॉलम नाम")।
WITH DatePeriods(ThisWeek,LastWeek,MonthToDate,QuarterToDate,YearToDate) AS
(
SELECT DATEADD(WEEK,-1,GETUTCDATE()) AS ThisWeek
,... AS LastWeek
,... AS MonthToDate
,... AS QuarterToDate
,DATEADD(YEAR,-1,GETUTCDATE()) AS YearToDate
)
SELECT RecordName
,CASE
WHEN RecordDate > ThisWeek THEN 'This week'
END
UNION ALL
SELECT RecordName
,CASE
WHEN RecordDate > LastWeek THEN 'Previos week'
END
SELECT RecordName
,CASE
WHEN RecordDate >YearToDate THEN 'Year ago'
END
आपको प्रत्येक क्वेरी के खंड से सीटीई का उपयोग करना होगा। आप इसे 'क्रॉस लागू' के साथ कर सकते हैं। –
बहुत बहुत धन्यवाद। यह सही काम है। कृपया प्रश्न के रूप में चिह्नित करने के लिए अपना उत्तर पोस्ट करें। – gotqn