Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL để lấy danh sách các ngày cũng như các ngày trước và sau đó mà không bị trùng lặp

Điều này sẽ phù hợp với bạn:

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

Lưu ý:Tôi đã thay đổi UNION thứ hai đến một UNION ALL để có hiệu suất tốt hơn; truy vấn con cuối cùng sẽ không bao giờ có bản sao với hai truy vấn con đầu tiên, vì DateType luôn là 2 cho hai đầu tiên và 1 cho UNION cuối cùng truy vấn ed.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chọn bộ xử lý cho SQL Server 2012

  2. Truy vấn thẻ chéo Sql Server 2008

  3. Kiểm tra xem một chuỗi có chứa một chuỗi con trong SQL Server 2005 hay không bằng cách sử dụng một quy trình được lưu trữ

  4. T-SQL Stored Procedure Execution có phải là 'nguyên tử' không?

  5. Tính giá trị Phân vị thứ 95?