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

SQL за получаване на списък с дати, както и дни преди и след без дубликати

Това трябва да работи за вас:

SELECT MyDate, min(DateType) as DateType
FROM (
    SELECT mydate - 1 AS MyDate, 2 AS DateType
    FROM myTable
    WHERE myTable.fkId = @MyFkId;

    UNION

    SELECT mydate + 1 AS MyDate, 2 AS DateType
    FROM myTable
    WHERE myTable.fkId = @MyFkId;

    UNION ALL

    SELECT mydate AS MyDate, 1 AS DateType
    FROM myTable
    WHERE myTable.fkId = @MyFkId;
) AS myCombinedDateTable
group by MyDate

Забележка:Промених втория UNION към UNION ALL за по-добро представяне; последната подзаявка никога няма да има дубликати с първите две подзаявки, тъй като DateType винаги е 2 за първите две и 1 за последния UNION ed заявка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Намерете дата на последна промяна/разгръщане на пакета SSIS - SQL Server

  2. Стойности, разделени със запетая със SQL заявка

  3. Динамичен пивот на SQL Server с множество колони

  4. Постоянно SQL Server 80% използване на процесора

  5. Неправилен синтаксис близо до „OFFSET“. Невалидно използване на опцията NEXT в оператора FETCH в ядрото на Entity Framework