当前位置:  开发笔记 > 编程语言 > 正文

为不同的客户选择不同的最大ID

如何解决《为不同的客户选择不同的最大ID》经验,为你挑选了1个好方法。

情况:

我们有月度文件加载到我们的数据仓库,但不是被旧的加载替换,这些只是相互编译.文件在几天内加载.

因此,当运行SQL脚本时,我们会得到重复的记录,以便抵消这种情况,我们运行10-20个"客户"的联合并选择Max(loadID),例如

SELECT
Customer
column 2
column 3

FROM
MyTable

WHERE
LOADID = (SELECT MAX (LOADID) FROM MyTable WHERE Customer= 'ASDA')

UNION 


SELECT
Customer
column 2
column 3

FROM
MyTable

WHERE
LOADID = (SELECT MAX (LOADID) FROM MyTable WHERE Customer= 'TESCO'

上述联盟必须为多个客户完成,所以我当然认为必须有一个更有效的方式.

我们不能在SELECT语句中使用MAX(LoadID),因为可能的情况可能需要以下内容:

星期一:Asda,Tesco,Waitrose加载到DW(LoadID为124)

星期二:Sainsburys加载DW(LoadID为125)

星期三:新的Tesco加载DW(LoadID为126)

所以我想要LoadID 124 Asda&Waitrose,125 Sainsburys和126 Tesco



1> Gordon Linof..:

使用窗口功能:

SELECT t.*
FROM (SELECT t.*, MAX(LOADID) OVER (PARTITION BY Customer) as maxLOADID
      FROM MyTable t
     ) t
WHERE LOADID = maxLOADID;


这个!!我们有一个胜利者!谢谢戈登.所以我问了两个问题,两者都与'PARTITION BY'有关,所以猜猜我会读什么!
推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有