Tôi có một bảng trong SQLServer 2008r2 như dưới đây.TSQL Nhóm theo Cột với nhiều giá trị
Tôi muốn chọn tất cả các hồ sơ nơi [Fg]
cột = 1 mà liên tục bởi [Id]
để dẫn vào giá trị 2 cho mỗi sự kết hợp [T_Id]
và [N_Id]
.
Có thể có trường hợp kỷ lục trước [Fg]
= 2 không = 1
Có thể có bất kỳ số lượng hồ sơ, nơi giá trị của [Fg]
= 1 nhưng chỉ có một kỷ lục mà [Fg]
= 2 cho mỗi [T_Id]
và [N_Id]
kết hợp.
Vì vậy, ví dụ bên dưới, tôi muốn chọn các bản ghi với [Id]
s (4,5) và (7,8,9) và (19,20).
Bất kỳ bản ghi nào cho [T_Id]
3 và 4 đều bị loại trừ.
Dự kiến sản lượng
Ví dụ dữ liệu thiết
DECLARE @Data TABLE (Id INT IDENTITY (1,1), T_Id INT, N_Id INT, Fg TINYINT)
INSERT INTO @Data
(T_Id, N_Id, Fg)
VALUES
(1, 2, 0), (1, 2, 1), (1, 2, 0), (1, 2, 1), (1, 2, 2), (2, 3, 0), (2, 3, 1),
(2, 3, 1), (2, 3, 2), (3, 4, 0), (3, 4, 0), (3, 4, 0), (3, 4, 2), (4, 5, 0),
(4, 5, 1), (4, 5, 0), (4, 5, 2), (5, 7, 0), (5, 7, 1), (5, 7, 2)
vì vậy, tất cả các bản ghi với FG 0 phải được lọc? Bởi vì nếu không 0, 1, 2 sẽ là một thứ tự đúng của việc truy tố hồ sơ, phải không? Và tại sao ID 7 được kỳ vọng là bản ghi chính xác vì ID 7 và 8 đều có FG 1? – Tyron78
@ Tyron78 bạn có thể có nhiều bản ghi liên tiếp trong đó FG = 1. Tôi đã giải thích điều này trong câu hỏi –
Nhìn vào [ở đây] (https://blogs.msdn.microsoft.com/sqlreleaseservices/end-of-mainstream-support- cho-sql-server-2008-và-sql-server-2008-r2 /); tại sao sử dụng SQLServer 2008r2? –