我有一张这样的表:
STATE code company rate
----------------------------------
TX SD 1 0.5
TX SD 2 0.5
TX SD 3 0.7
TX SD 4 0.5
..........
我需要验证在相同状态和相同代码下的速率是否相同。
我考虑自己加入表并获得1和rate2的比率,然后可以用比较两列的情况
这样的事情:
CASE WHEN COLUMN1 = COLUMN2 THEN '1' ELSE '0' END AS MyDesiredResult
我不知道它有效吗?我怎么能加入这个桌子?
基本上,我需要一份报告,看看在相同状态和相同代码下费率是否不同。
感谢
答案 0 :(得分:1)
select *
from tbl t1
join tbl t2 using (state, code)
where t1.rate <> t2.rate
and t1.company < t2.company;
返回的每一行都会显示不匹配:如果没有不匹配,那么现在会返回行。最后一行只是阻止显示所有结果两次。
如果只有一个(state, code)
组合有多个rate
,则上述查询可能会返回大量行。为了只看到它们不同的不同费率的摘要,请改用:
select state, code, rate, count(*)
from tbl
group by state, code
having count(*) > 1;
答案 1 :(得分:1)
这将显示违规的州/代码组合:
select state, code, min(rate) min_rate, max(rate) max_rate
from myTable
group by state, code
having min(rate) != max(rate)
您可以进一步处理以查找每个费率有多少行。例如使用CTE,但我把它作为读者的练习。