Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zwiń dane weekendowe inaczej niż w dni powszednie

to wystarczy:

SELECT CAST(Submitted AS DATE) AS [Submission Date]
    , DATEPART(weekday, CAST(Submitted AS DATE)) AS [DayOfWeek]
    , DATENAME(dw, CAST(Submitted AS DATE)) AS [DayOfWeekForm]
    , count(*) AS [Submission Count]
    , CASE 
        WHEN (DATEPART(weekday, CAST(Submitted AS DATE))) IN (
                '1'
                ,'7'
                )
            THEN ('Weekend')
        ELSE DATENAME(dw, CAST(Submitted AS DATE))
        END AS [End Column]
    , xyz_cnt._cnt AS [End Sub]
FROM dbo.xyz LEFT JOIN
 (SELECT CASE DATEPART(weekday, CAST(Submitted AS DATE))  
        WHEN '1' THEN DATEADD(dd, -2, CAST(Submitted AS DATE))
        WHEN '7' THEN DATEADD(dd, -1, CAST(Submitted AS DATE))
        ELSE CAST(Submitted AS DATE) END AS [SubmitDate]
    , count(*) AS _cnt 
  FROM dbo.xyz
  GROUP BY
  CASE DATEPART(weekday, CAST(Submitted AS DATE))  
        WHEN '1' THEN DATEADD(dd, -2, CAST(Submitted AS DATE))
        WHEN '7' THEN DATEADD(dd, -1, CAST(Submitted AS DATE))
        ELSE CAST(Submitted AS DATE) END ) AS xyz_cnt 
  ON CAST(xyz.Submitted AS DATE) = xyz_cnt.SubmitDate
WHERE CAST(Submitted AS DATE) BETWEEN '2012-09-01'
        AND '2012-09-10'
GROUP BY CAST(Submitted AS DATE), xyz_cnt._cnt
ORDER BY CAST(Submitted AS DATE)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd systemu operacyjnego SQL Server 5:5 (odmowa dostępu).

  2. jak uzyskać pełny zestaw wyników z SSMS

  3. Najlepsze indeksy do użycia w instrukcji OR w SQL Server

  4. Czy wykonanie procedury składowanej T-SQL jest „atomowe”?

  5. Wstawianie identyfikatorów GUID za pomocą SqlBulkCopy