我目前正在对运行查询需要很长时间的旧工作进行故障排除。旧作业使用第一个查询,但我一直在使用第二个查询进行测试。
之间的差异:
Select Max(Cl1) as Tab,
Max(Cl2) as Tb,
Customer
From TableA
group by Customer
对比
Select Customer,
Tab,
tb
From
(Select Customer,
Tab,
tb,
Rank() over (partition by Customer order by Cl1 desc) rk1,
Rank() over (partition by Customer order by Cl2 desc) rk2
From TableA) X
Where X.rk1 = 1 and X.rk2 = 1
Tab Tb 客户
A45845 100052 新
A45845 100053 新
A45845 100054 恶臭
该表将始终具有 Tab 和 Tb 列的值(无空值或空白值)。选项卡不是特定客户独有的。Tb 是一个连续且连续递增的整数,不可能有重复(唯一)。客户的最新 Tab 值也将具有最新的 Tb。
虽然结果相同,但在这种情况下更改查询时我可能没有考虑到什么?
编辑:修复了构建示例而不使用真实列或表名时第二个查询的错误。还对场景进行了说明。我对原始帖子中的更新信息和修复表示歉意,甚至在我有机会仔细检查之前就打电话给我。