Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да получите датите за групиране на записи за период от 3 дни в SQL?

Ето го предложеното от мен решение:

DECLARE @MinDate AS DATETIME = (SELECT MIN(flight_date) FROM flights);

WITH cte
AS
(
    SELECT
        flight_date, DATEDIFF(DAY, @MinDate, flight_date) AS NoDays,
        DATEDIFF(DAY, @MinDate, flight_date)/5 AS NoGroup,
        DPT
    FROM flights
)
SELECT  
    DATEADD(DAY, NoGroup*5, @MinDate) AS [Week Start],
    DATEADD(DAY, NoGroup*5+4, @MinDate) AS [Weed End],  
    SUM(DPT)
FROM cte
GROUP BY NoGroup;

Идеята е да се формират групи от 5 дни, след което да се асоциира запис към конкретна група въз основа на разделяне с 5. NoDays представлява дните, прекарани от MinDate до Flight_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. SQL Server PIVOT може би?

  2. datetime2 срещу smalldatetime в SQL Server:Каква е разликата?

  3. Има ли начин да посочите множество схеми на SQL Server 2008 за командата 'generateChangeLog' на Liquibase?

  4. Вмъкване в таблица.. exec на свързания сървър не работи

  5. Лоша производителност на променливата на таблицата при вмъкване в съхранена процедура на SQL Server