Sql 如何在多个列上进行精确匹配并显示最新日期?
我只想显示与最新日期完全匹配的Sql 如何在多个列上进行精确匹配并显示最新日期?,sql,sql-server,Sql,Sql Server,我只想显示与最新日期完全匹配的TempString1、TempString2和TempString3。如何精确匹配三个字段并仅显示具有最新日期的行 桌子 输出: TempString1 TempString2 TempString3 Temp4 TempDate ---------------------------------------------------------------------- A A2
TempString1
、TempString2
和TempString3
。如何精确匹配三个字段并仅显示具有最新日期的行
桌子
输出:
TempString1 TempString2 TempString3 Temp4 TempDate
----------------------------------------------------------------------
A A2 1 1.01 01/22/2020
A A2 2 1.02 01/22/2020
A A2 3 1.03 01/23/2020
您可以使用
ROW\u NUMBER()
函数尝试此操作
是一个窗口函数,它为结果集分区内的每一行指定一个顺序整数。对于每个分区中的第一行,行号以一开始
下面显示了ROW_NUMBER()函数的语法:
ROW_NUMBER() OVER (
[PARTITION BY partition_expression, ... ]
ORDER BY sort_expression [ASC | DESC], ...
)
SELECT TempString1
,TempString2
,TempString3
,Temp4
,TempDate
FROM (
SELECT TempString1
,TempString2
,TempString3
,Temp4
,TempDate
,ROW_NUMBER() OVER (
PARTITION BY TempString1
,TempString2
,TempString3
ORDER BY TempDate DESC
) AS RN
FROM YourTable
) a
WHERE rn = 1
这是现场直播
在下面的查询中,上述查询的结果被视为名称a的表
SELECT TempString1
,TempString2
,TempString3
,Temp4
,TempDate
FROM (
SELECT TempString1
,TempString2
,TempString3
,Temp4
,TempDate
,ROW_NUMBER() OVER (
PARTITION BY TempString1
,TempString2
,TempString3
ORDER BY TempDate DESC
) AS RN
FROM YourTable
) a
WHERE rn = 1
两个查询的结果如下所示。
您可以使用
ROW\u NUMBER()
是一个窗口函数,它为结果集分区内的每一行指定一个顺序整数。对于每个分区中的第一行,行号以一开始
下面显示了ROW_NUMBER()函数的语法:
ROW_NUMBER() OVER (
[PARTITION BY partition_expression, ... ]
ORDER BY sort_expression [ASC | DESC], ...
)
SELECT TempString1
,TempString2
,TempString3
,Temp4
,TempDate
FROM (
SELECT TempString1
,TempString2
,TempString3
,Temp4
,TempDate
,ROW_NUMBER() OVER (
PARTITION BY TempString1
,TempString2
,TempString3
ORDER BY TempDate DESC
) AS RN
FROM YourTable
) a
WHERE rn = 1
这是现场直播
在下面的查询中,上述查询的结果被视为名称a的表
SELECT TempString1
,TempString2
,TempString3
,Temp4
,TempDate
FROM (
SELECT TempString1
,TempString2
,TempString3
,Temp4
,TempDate
,ROW_NUMBER() OVER (
PARTITION BY TempString1
,TempString2
,TempString3
ORDER BY TempDate DESC
) AS RN
FROM YourTable
) a
WHERE rn = 1
两个查询的结果如下所示。
Suraj,NexSqLeLee我把18个问题分成两个部分来解释:@ NeqSqLeLee如果这给了你答案,请考虑把它标记为解决方案。这让未来的读者知道它是有用的,并且你获得了声誉,这对获得那些早期特权(比如能够评论别人的问题)非常有帮助。谢谢。Suraj,第18行中的A代表什么?@ NeqSqLeLeulee我把查询分成两个部分来解释。@ NeqSqLeLee如果它提供了答案,请考虑把它标记为解决方案。这让未来的读者知道它是有用的,并且你获得了声誉,这对获得那些早期特权(比如能够评论别人的问题)非常有帮助。谢谢