如何找到两列的标识

  • 本文关键字:两列 标识 何找 sql
  • 更新时间 :
  • 英文 :


我有这样的表格:

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;

最新更新