sql >> Database >  >> RDS >> Sqlserver

SQL om een ​​lijst met datums en dagen ervoor en erna te krijgen zonder duplicaten

Dit zou voor jou moeten werken:

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

Opmerking:ik heb de tweede UNION . gewijzigd naar een UNION ALL voor betere prestaties; de laatste subquery zal nooit duplicaten hebben met de eerste twee subquery's, sinds DateType is altijd 2 voor de eerste twee, en 1 voor de laatste UNION ed vraag.



  1. Oracle's standaard DATE-indeling

  2. In ''mysql'' Manager van pid-bestand stoppen zonder updatebestand

  3. Ik krijg String-gegevens, juiste afkapfouten van PHP met behulp van ODBC en maak verbinding met een Microsoft SQL Server 2008R2-instantie

  4. Hoe herhaalbare json-knooppuntwaarden afzonderlijk van XML te extraheren met behulp van ORACLE SQL?