sql >> Databasteknik >  >> RDS >> Sqlserver

SQL för att få lista över datum samt dagar före och efter utan dubbletter

Detta borde fungera för 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

Obs! Jag ändrade den andra UNION till en UNION ALL för bättre prestanda; den sista underfrågan kommer aldrig att ha dubbletter med de två första underfrågorna, eftersom DateType är alltid 2 för de två första och 1 för den sista UNION ed fråga.



  1. Använd Ruby on Rails och SSH för att komma åt fjärransluten MySQL-databas på fjärrservern

  2. Använd filter i Oracle View

  3. Välja mot delmängder av en lista i MySQL

  4. Analysera Datetime till JAVA Date