我的问题:
我有表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)
谢谢
答案 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然后他们必须有一个费率变化。