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

SQL, aby uzyskać listę dat oraz dni przed i po bez duplikatów

To powinno działać dla Ciebie:

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

Uwaga:zmieniłem drugą UNION do UNION ALL dla lepszej wydajności; ostatnie podzapytanie nigdy nie będzie miało duplikatów z pierwszymi dwoma podzapytaniami, ponieważ DateType to zawsze 2 dla pierwszych dwóch i 1 dla ostatniego UNION ed zapytanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co to jest protokół TDS w wersji 8.0 i dlaczego powinienem go używać?

  2. Jak dokumentować bazę danych SQL Server

  3. php SQL Server błąd mssql_select_db

  4. Prace konserwacyjne w małych bazach danych SQL

  5. Jak zainstalować Azure Data Studio na komputerze Mac