sql >> Databáze >  >> RDS >> Sqlserver

SQL pro získání seznamu dat a dnů před a po bez duplikátů

Toto by vám mělo fungovat:

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

Poznámka:Změnil jsem druhý UNION na UNION ALL pro lepší výkon; poslední poddotaz nikdy nebude mít duplikáty s prvními dvěma poddotazy, protože DateType je vždy 2 pro první dva a 1 pro poslední UNION ed dotaz.



  1. Okno pro výběr SQL kolem konkrétního řádku

  2. WSO2 API Manager:chpasswd.sh nefunguje při použití externí databáze

  3. ERROR 1305 (42000):SAVEPOINT ... neexistuje

  4. Cizí klíč MySQL InnoDB mezi různými databázemi