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

एसक्यूएल में पिछले छह सप्ताह रविवार की तारीखों तक प्रत्येक सप्ताह के अनुसार समूह कैसे करें?

मैंने आपके द्वारा पोस्ट किए गए डेटा के बारे में कुछ धारणाएँ बनाई हैं।

सबसे पहले, आपके द्वारा पूरे वर्ष पोस्ट किए गए मान 2011 . के रूप में बताए गए हैं लेकिन कॉलम हेडर के रूप में अंतिम समाप्ति तिथि 2011 . के अनुरूप नहीं है , वे हैं Sunday 2012 . के लिए मान इसलिए मैंने डेटा बदल दिया। साथ ही Early ASN 8/15/2011 12:00 . की अंतिम प्रविष्टि , मेरा मानना ​​है कि एक Late ASN माना जाता है प्रविष्टि अन्यथा करने के लिए योग मेल खाते हैं।

परिणाम प्राप्त करने के लिए, आप चाहते हैं कि आप PIVOT समारोह। यह फ़ंक्शन आपको मानों को एकत्रित करने और फिर उन्हें कॉलम में बदलने की अनुमति देता है।

SET DATEFIRST 1 -- set this so the start of the week is Sunday
select InstanceType,
  sum([39]) as Sep_23, 
  sum([38]) as Sep_16, 
  sum([37]) as Sep_09, 
  sum([36]) as Sep_02, 
  sum([35]) as Aug_26, 
  sum([34]) as Aug_19
from
(
  select SPGI01_INSTANCE_TYPE_C as InstanceType,
    [39], [38], [37], [36], [35], [34]
  from
  (
    select SPGI01_INSTANCE_TYPE_C,
      DatePart(wk, SPGI01_CREATE_S) WeekNo,
      DATEADD(DAY, 7 -DATEPART(WEEKDAY,SPGI01_CREATE_S),SPGI01_CREATE_S) WeekEnd
    from table1
  ) x
  pivot
  (
    count(WeekEnd)
    for weekno in ([39], [38], [37], [36], [35], [34])
  ) p
) x1
group by InstanceType with rollup

देखें SQL Fiddle with Demo




  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 Server 2008 में तालिका डिज़ाइन नहीं बदल सकता

  2. किसी नेस्टेड प्रतिस्थापन फ़ंक्शन का उपयोग किए बिना स्ट्रिंग से एकाधिक वर्णों को बदलें

  3. क्या प्राथमिक कुंजी निष्क्रिय हैं?

  4. तिथियों की एक श्रृंखला के बीच तिथियां प्राप्त करना

  5. स्क्रिप्ट SQL सर्वर 2008 हटाएं