代码之家  ›  专栏  ›  技术社区  ›  s k

我可以知道如何在SQL Server中构造follow查询吗?

  •  2
  • s k  · 技术社区  · 7 年前
    CREATE TABLE (
        A INT NOT NULL,
        B INT NOT NULL
    )
    

    我想用a的一个子集,例如{1,2},来计算B的出现次数

    例子:

    A   B
    1   7 *
    2   7 *
    3   7
    1   8 *
    2   8 *
    1   9
    3   9
    

    当B=7时,A=1,2,3。很好

    当B=8,A=1,2。很好

    当B=9,A=1,3。不满足,缺少2

    3 回复  |  直到 7 年前
        1
  •  1
  •   Damien_The_Unbeliever    7 年前

    如果我没听错的话,我们想找到 B 我们都有 1 2 在里面 A

    此查询执行以下操作:

    declare @t table (A int not null, B int not null)
    insert into @t(A,B) values
    (1,7),
    (2,7),
    (3,7),
    (1,8),
    (2,8),
    (1,9),
    (3,9)
    
    select COUNT(DISTINCT B) from (
    select B
    from @t
    where A in (1,2)
    group by B
    having COUNT(DISTINCT A) = 2
    ) t
    

    一个或两个 DISTINCT 可能没有必要-这取决于您的数据是否可以包含 .

        2
  •  0
  •   Mureinik    7 年前

    SELECT   b
    FROM     mytable
    GROUP BY b
    HAVING   COUNT(*) + 1 = MAX(a) - MIN(a)
    
        3
  •  0
  •   Moinul Islam    7 年前
    SELECT COUNT(DISTINCT B)  FROM TEMP T WHERE T.B NOT IN 
    (SELECT B FROM
    (SELECT B,A,
    LAG (A,1) OVER (PARTITION BY B ORDER BY A) AS PRE_A
    FROM Temp) K
    WHERE K.PRE_A IS NOT NULL AND K.A<>K.PRE_A+1);