sql >> Database teknologi >  >> RDS >> Sqlserver

SQL for at få liste over datoer samt dage før og efter uden dubletter

Dette burde fungere for dig:

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

Bemærk:Jeg ændrede den anden UNION til en UNION ALL for bedre ydeevne; den sidste underforespørgsel vil aldrig have dubletter med de første to underforespørgsler, da DateType er altid 2 for de to første og 1 for den sidste UNION ed forespørgsel.



  1. SQL pivotabel tabel er skrivebeskyttet, og celler kan ikke redigeres?

  2. Hvad er forskellen mellem datetime og timestamp

  3. Hvilken JDBC-drivertype skal jeg bruge til at få adgang til en Oracle-database?

  4. COUNT i en forespørgsel med flere JOINS og en GRUPPE EFTER KLAUSUL