我在创建一个基于2列(材料和分析)的唯一组合返回最新行的查询时遇到了问题,而旧的(按日期)组合被解除了。
我已经过滤了所需的列:
ID Col1 Col2 Col3 MaterialID Material AnalysisID FKS
126 E006 E5 e3 44 PPL 39 Density
126 E006 E5 e3 44 PPL 107 Presure
126 E006 E5 e3 44 PPL 95 Amount of C
126 E006 E5 e2 44 PPL 95 Amount of C
所以第四行应该被驳回,因为我们对PPL的数量有更新的材料分析。
我当前的查询如下所示:
SELECT TOP 100
a.[ID]
,a.[Col1]
,a.[Col1]
,a.[Col1]
,b.[MaterialID]
,b.[Material]
,b.[AnalysisID]
FROM [Table1] a
INNER JOIN
[Table2] b
ON
a.[ID]=b.[MaterialID]
WHERE a.[Col1] like '%E%'
ORDER BY
b.[Date] DESC
感谢您的贡献。 如果我没有说清楚,我会尝试澄清。
BR
答案 0 :(得分:1)
这需要row_number()
:
SELECT *
FROM (SELECT . . . ,
ROW_NUMBER() OVER (PARTITION BY Material, AnalysisID
ORDER BY date DESC
) as seqnum
FROM [Table1] a INNER JOIN
[Table2] b
ON a.[ID] = b.[MaterialID]
WHERE a.[Col1] like '%E%'
) ab
WHERE seqnum = 1;