【问题标题】:sql query to get last 4 friday datessql查询获取最近4个星期五的日期
【发布时间】:2014-08-21 07:00:39
【问题描述】:

我想从下表中获取最近 4 个星期五的日期。取决于用户输入计数将存储在另一个表中,并基于该值我想获取日期。例如,如果计数是 5,我想获取最后 5 个星期五的日期。

---------------------------------------------
  Id        |           fridaydate
---------------------------------------------
   1        |   2014-08-15 11:46:00.000   |

   2        |   2014-08-22 11:46:00.000   |

   3        |   2014-08-08 11:46:00.000   |

   4        |   2014-08-01 11:46:00.000   |

   5        |   2014-07-25 11:46:00.000   |

   6        |   2014-07-18 11:46:00.000   |

   7        |   2014-07-11 11:46:00.000   |

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    使用以下格式:

    DECLARE @D INT= 5    -- User Input value
    
    SELECT TOP (@D) *
    FROM YourTable
    

    您可以在存储过程中使用上述查询,如下所示:

    Create Procedure YourProcedureName 
      @D int
    as Begin
        SELECT TOP (@D) *
        FROM YourTable
        Order by fridaydate Desc
    End
    

    【讨论】:

    • 您可以创建过程并将每个值用于顶部命令。
    【解决方案2】:
    SELECT top 5 datefield
    FROM table
    WHERE lower(datename(dw, datefield))='friday'
    GROUP BY datefield
    ORDER BY datefield desc
    

    【讨论】:

    • 我尝试了上述查询。我正在重复这些值。我不想重复约会。请帮忙。
    • 嗨,这可能很好地解决了这个问题......但如果你能提供一些关于它如何工作以及为什么工作的解释会很好:) 不要忘记 - 有很多新手在 Stack Overflow 上,他们可以从你的专业知识中学到一两件事——对你来说显而易见的事情对他们来说可能并不那么明显。
    • @TarynEast 比你找不到的更基本的 SQL。如果一个人不掌握这一点,一个人真的应该做一门课程。为了快速解决问题,我会帮忙解答。
    • 嗨 nire - 我知道 - 这是非常基础的,而且我碰巧知道 SQL,所以我不是在问我,但是 NO,你不能假设有人应该做一门课程。就在上周,我帮助了一个五年级和 Stack Overflow 上的人。这些人在这里欢迎,我们不应该仅仅因为我们碰巧忘记了作为初学者的感觉而排除他们......如果你的SQL是基本的,那么只需要一两句话解释你为什么做了你所做的事情。
    • 如果有人真的对学习感兴趣,他们不会要求快速解决特定问题。如果有人有兴趣学习SQL,我推荐[link]sqlcourse.com
    【解决方案3】:

    这样就可以了:

    select ca.*
    from dbo.AnotherTable a
        cross apply (
            select top (a.FridayCount) *
            from dbo.FridayTable ft
            where ft.FridayDate <= getdate()
            order by ft.FridayDate desc
        ) ca
    where a.UserId = @SomeUserId
    order by ca.FridayDate desc;
    

    【讨论】:

    • 我使用了上述所有查询。但我没有得到想要的输出。我的桌子上有三次 2014 年 8 月 22 日。当我执行这些查询时,我会三次获得日期。相反,我只想得到一次。请帮我解决这个问题。提前致谢。
    • @Mythily, select distinct top (a.FridayCount) ft.FridayDate from dbo.FridayTable ... - ?
    【解决方案4】:
    SELECT TOP @YourCount fridaydate FROM Table ORDER BY Id DESC
    

    【讨论】:

      猜你喜欢
      • 2017-07-26
      • 1970-01-01
      • 1970-01-01
      • 2021-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      相关资源
      最近更新 更多