我在SQLServer 2008r2中有一个表,如下所示.
我想选择[Fg]列= 1的所有记录,其中每个记录连续按[Id]顺序导入每个[T_Id]和[N_Id]组合的值2 .
可能存在[Fg]= 2 之前的记录不= 1的情况
可以有任意数量的记录,其值[Fg]= 1,但只有一个记录,其中[Fg]每个记录= 2 [T_Id]和[N_Id]组合.
因此,对于下面的示例,我想选择带有[Id]s(4,5)和(7,8,9)和(19,20)的记录.
[T_Id]不包括3和4的任何记录.
预期产出
示例数据集
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), …Run Code Online (Sandbox Code Playgroud) 我必须在两个条件下加入两个表.我希望如果第二个条件不成立但表1中有一个空白单元格然后加入该行.如果第二个条件不成立则返回零.
加入表1和表2 - 返回表1和表1中的第3,4和5列.
DECLARE @table1 TABLE (
letter CHAR(1),
num1 INT,
num2 NUMERIC(5,2),
num3 INT,
num4 NUMERIC(5,2)
)
DECLARE @table2 TABLE (
letter CHAR(1),
num1 INT
)
INSERT INTO @table1 VALUES
('A', 1, 0.25, 10, 0.5),
('A', 2, 0.50, 15, 0.75),
('A', 3, 0.25, 20, 1),
('A', null, 0.50, 25, 1.5),
('B', 1, 0.25, 10, 0.5),
('B', 2, 0.50, 15, 0.5),
('B', 3, 0.25, 20, 0.75)
INSERT INTO @table2 VALUES
('A', 1),
('A', 2),
('A', 3),
('A', 5),
('B', …Run Code Online (Sandbox Code Playgroud)