每n行返回一个列值

时间:2017-03-16 23:22:24

标签: sql sql-server tsql

我在没有主键的表上进行了简单的选择。我正在提取365个值,一年中每天一个。我是否可以在SQL Server 2008 R2中执行此操作。我希望添加另一个名为rain的列,并将其填充为每周一次或每七行一次。我目前的疑问是:

SELECT jDay, tMax, tMin 
FROM tableName;

它只返回前三列。如何实现雨柱,使其看起来像这样:

jDAy   tmax    tmin    rain
11    21.1    10.1     0     
12    22.1    11.1     0 
13    23.1     9.1     0 
14    24.1     8.1     0 
15    29.1    10.1     0 
16    21.1    11.1     0 
17    22.1    12.1     4  

编辑:感谢ZLK的解决方案:

SELECT 
    julDay, tMax, tMin, 
    rain = case 
              when row_number() over (order by julDay) % 7 = 0 then 4 
              else 0 
           end
FROM
    tableName 
WHERE
    .......;

1 个答案:

答案 0 :(得分:1)

ROW_NUMBER()MODULO (%)一起使用,您可以每X行指定一个值。

e.g。

SELECT julDay,
       tMax,
       tMin,
       rain = CASE WHEN ROW_NUMBER() OVER (ORDER BY julDay) % 7 = 0 THEN 4 ELSE 0 END
FROM tableName;