SQL Server 2014 - 选择具有两个条件的语句
Posted
技术标签:
【中文标题】SQL Server 2014 - 选择具有两个条件的语句【英文标题】:SQL Server 2014 - select statements with two contitions 【发布时间】:2020-06-10 19:27:13 【问题描述】:这是交易:我有一个表,其中有一列用于路径,另一列用于日期。由于我是这个 SQL 世界的新手,我不确定哪种语句更适合这个问题。它必须给我:
-
如果日期为空,路径列的值或;
如果日期不为空,则路径列的值在其日期列中具有最新的日期值。
需要注意的是,表格最后不能有任何重复的路径。
表格现在的外观示例:
path1 |----------------------------|
path2 |----------------------------|
path3 |2020-06-04 00:00:00|
path3 |2020-06-03 00:00:00|
path3 |----------------------------|
现在我有一些查询可以部分解决问题,这里是:
select path_column, date_column
from my_table a
where a.date_column = (select max(date_column)
from my_table b
where a.path_column = b.path_column)
or date_column IS NULL
以上查询结果:
path1 |----------------------------|
path2 |----------------------------|
path3 |2020-06-04 00:00:00|
path3 |----------------------------|
虽然我需要它看起来像这样:
path1 |----------------------------|
path2 |----------------------------|
path3 |2020-06-04 00:00:00|
我的组织目前正在使用 SQL Server 2014。祝您有美好的一天!
【问题讨论】:
【参考方案1】:使用row_number()
:
select t.*
from (select t.*,
row_number() over (partition by path1 order by date desc) as seqnum
from my_table t
) t
where seqnum = 1;
NULL
s 被认为是最低值,因此降序排序将它们放在最后。
【讨论】:
【参考方案2】:可以使用Group By
子句:-
select path_column, max(date_column) date_column
from my_table group by path_column;
有关演示数据,请访问This Link
【讨论】:
以上是关于SQL Server 2014 - 选择具有两个条件的语句的主要内容,如果未能解决你的问题,请参考以下文章