我有这样的表格:
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
我不知道它有效吗?如何加入表?
基本上,我需要一份报告来查看在相同状态和相同代码下的比率是否不同。
谢谢
这将
向您显示违规状态/代码组合:
select state, code, min(rate) min_rate, max(rate) max_rate
from myTable
group by state, code
having min(rate) != max(rate)
您可以进一步处理以查找每个速率有多少行。 例如使用 CTE,但我将其作为读者的练习。
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;