查找每个值是否相同

时间:2014-08-25 12:42:48

标签: sql-server-2008

我的问题:

我有表Table1:

ClientID Open
1         1
2         1
3         0

并且表2:

  ClientID  Date    Rate     
    1          01    1
    1          02    2
    1          03    2 
    2          01    1
    2          02    1
    2          03    1
    3          01    1
    3          02    2
    3          03    2

我想找到开放客户端(open = 1),其中“Rate”值没有改变。这意味着我想找到客户编号2(开放客户端和费率仍然相同)但不是客户编号1(他也是开放的,但他的费率是不同的(1,2,2)

谢谢

1 个答案:

答案 0 :(得分:3)

打开是一个保留字它可能必须在[]中我不记得MSFTs规则

SELECT t1.clientID
FROM table1 t1
INNER JOIN table2 t2
   ON t1.clientID=T2.ClientID
WHERE t1.[open] = 1
GROUP BY t1.clientID
HAVING count(Distinct t2.rate) = 1

这是客户端ID上的内部联接,用于获取由每个客户端的速率和打开状态组成的一组数据。结果仅限于具有不同比率1的开放客户。

如果计数不是1,则意味着客户的费率不同,这不是您想要的。这里的关键是having子句中的count(Distinct field)。不同的力量只有每个客户的价格的唯一值;如果客户有明确的计数> 1然后他们必须有一个费率变化。