【发布时间】:2015-12-17 20:58:03
【问题描述】:
情况:
我们每月都有文件加载到我们的数据仓库中,但是这些文件并没有被旧负载替换,而是在彼此之上编译。这些文件是在几天内加载的。
所以在运行 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)
星期三:在 DW 中加载了新的 Tesco(LoadID 为 126)
所以我想要 LoadID 124 Asda & Waitrose、125 Sainsburys 和 126 Tesco
【问题讨论】:
标签: sql sql-server tsql