查找没有“AC”状态的组合

时间:2015-10-25 01:26:31

标签: sql-server

考虑下面的数据存储在临时表中。如何获得没有状态记录具有“AC”值的所有ID /州/组合?

Data Image

结果应该产生

   ID  State  Group
    2   FL     LI
    3   FL     VA
    5   FL     LI

2 个答案:

答案 0 :(得分:1)

有几种查询模式可以实现这一结果。

使用GROUP BY操作的其中一种模式的示例,其中包含条件的聚合(以排除分组中具有status值为'AC'的行的分组 SELECT t.id , t.state , t.group FROM mytable t GROUP BY t.id , t.state , t.group HAVING MAX(CASE WHEN t.status='AC' THEN 1 ELSE 0 END) = 0

  SELECT t.id
       , t.state
       , t.group
    FROM mytable t
    LEFT
    JOIN mytable s
      ON s.id    = t.id
     AND s.state = t.state
     AND s.group = t.group
     AND s.status = 'AC'
   WHERE s.id IS NULL
   GROUP
      BY t.id
       , t.state
       , t.group

另一种模式的示例,使用反连接:

%Time%

答案 1 :(得分:1)

byte graph[][] = { 
    { 0, 0, 0, 1, 0, 0, 0, 0 }, 
    { 0, 0, 1, 1, 0, 0, 0, 0 }, 
    { 0, 0, 0, 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 1, 1, 1, 0 }, 
    { 1, 1, 0, 0, 0, 0, 0, 0 }, 
    { 0, 0, 1, 0, 0, 0, 0, 0 } };