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

Nhóm các đối tượng tương tự trong các phạm vi ngày khác nhau để nhận ngày tối thiểu và tối đa trong SQL Server

Điều này sẽ giúp bạn tiếp tục:

CREATE TABLE Account (AccountID bigint,
                      onln_status varchar(3),
                      BrowseStatus char(1),
                      Beg_date date,
                      End_Date date);
GO

INSERT INTO Account
SELECT A, O, B, CONVERT(date,S,101), CONVERT(date,E,101)
FROM (
    VALUES (123456789,'On','Y','1/1/2018','2/1/2018'),
           (123456789,'On','N','2/2/2018','4/1/2018'),
           (123456789,'On','Y','4/2/2018','5/1/2018'),
           (123456789,'Off','N','5/2/2018','7/1/2018'),
           (123456789,'Off','Y','7/2/2018','8/1/2018'),
           (123456789,'On','Y','8/2/2018','10/1/2018'),
           (123456789,'On','N','10/2/2018','11/1/2018')) V(A, O, B, S, E);
GO

WITH Grps AS(
    SELECT *,
           ROW_NUMBER() OVER (ORDER BY Beg_date) - --You may need to add a PARTITION here (I.e. on AccountID)
           ROW_NUMBER() OVER (PARTITION BY onln_status ORDER BY Beg_date) AS Grp --You may need to add a PARTITION here (I.e. on AccountID)
    FROM Account)
SELECT AccountID,
       onln_status,
       MIN(beg_date) AS beg_date,
       MAX(End_date) AS End_Date
FROM Grps
GROUP BY AccountID,
          onln_status,
          Grp;

GO
DROP TABLE Account;

Lưu ý nhận xét của tôi về việc sử dụng ROW_NUMBER() Tuy nhiên. Bạn có thể cần thêm các phân vùng khác.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Máy chủ SQL bỏ qua trường hợp trong một biểu thức where

  2. Các truy vấn được thực thi lần cuối cho một cơ sở dữ liệu cụ thể

  3. Cách tạo tập lệnh cho tất cả kích hoạt trong cơ sở dữ liệu bằng Microsoft SQL Server Management Studio

  4. Nội bộ sao chép giao dịch SQL Server

  5. Làm cách nào để chuyển giá trị cho một tham số thủ tục được lưu trữ trong thành phần Nguồn OLE DB?