【问题标题】:Select rows by date and exclude row that has latest record按日期选择行并排除具有最新记录的行
【发布时间】:2017-10-10 02:15:42
【问题描述】:

我有一张桌子Orders

Name             DateOrdered
louie            01/50/2017
jonathan         02/06/2016
prince           05/23/2016
louie            07/02/2016

我想按年份选择记录,例如 2016 年,但我希望结果只显示 jonathan 和 prince,因为 louie 有 2017 年的最新记录,如何查询?提前致谢。

【问题讨论】:

标签: sql linq


【解决方案1】:

试试下面的示例查询。

 SELECT * from Orders WHERE YEAR(DateOrdered) = '2016' AND name != 
'louie';

【讨论】:

    【解决方案2】:

    带有子查询。例如在事务 sql (sybase ase)中

    Select from orders a
    Where DateOrdered  != (select min(dateordered) from orders b 
                           where convert(char(04),dateordered)=convert(char(04),a.dateordered))
    

    convert函数是比较字段dateordered中的年份部分

    希望对你有用

    【讨论】:

      【解决方案3】:

      如果您使用以下日期对查询进行排序,则查询可以删除第一行:

      declare @Total INT;
      declare @requiredRows INT;
      Select @Total=  Count (*) From Orders
      SET @requiredRows = @Total -1;
      
      Select * From(
      Select TOP (@requiredRows) * From Orders
      Order By DateOrdered ASC) As tbl
      Order By DateOrdered DESC
      

      您可以使用 'YEAR' 函数从 dateOrdered 列中提取年份

      【讨论】:

        猜你喜欢
        • 2020-08-22
        • 1970-01-01
        • 1970-01-01
        • 2023-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多