T / SQL,存储过程

时间:2018-04-23 13:30:07

标签: sql tsql stored-procedures dynamic

需要帮助。我想根据日期函数获取动态名称列表。上个月,上个月-1,上个月-2。简单地从上个月,从上个月 - 2和上个月 - 3

获得前10名
  1. 上个月十大名称。我想在上个月获得动态排名前十的名字。在这种情况下,上个月将是三月,就像我们四月份一样。
  2. 当前月份名称列表 - 2个月后退(2月份名称列表)
  3. 从当月 - 3个月(1月份的名单)
  4. 约翰

    由于

3 个答案:

答案 0 :(得分:1)

SELECT * FROM
(
    SELECT Datediff(Month,Date,GETDATE()) Mon
    ,ROW_NUMBER()Over (partition by Datediff(Month,date,GETDATE()) ORDER BY date) RNO ,* 
    FROM Table
)A 
WHERE mon <=3 and mon > 0 and rno<=10

答案 1 :(得分:0)

让我假设有一个名为“Table1”的表名为date_created&amp;值。

所以你的查询可能是: (1)上个月

select * from Table1
WHERE date_created>=DATEADD(month, datediff(month, 0, getdate())-1, 0)
and date_created<DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
order by Value desc

(2)过去两个月

select * from Table1
WHERE date_created>=DATEADD(month, datediff(month, 0, getdate())-2, 0)
and date_created<DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
order by Value desc

(3)过去3个月

select * from Table1
WHERE date_created>=DATEADD(month, datediff(month, 0, getdate())-3, 0)
and date_created<DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)
order by Value desc

答案 2 :(得分:0)

如果你有标记表,那么使用它来获取前10个月的名称:

SELECT TOP 10 n AS A, DATENAME(mm, DATEADD(mm, 0 - n, GETDATE())) FROM tally;

要创建标记表,请参阅SQL ServerCentral