1
我在没有主键的表上有一个简单的选择。我正在提取365个值,每年有一个值。我可以在SQL Server 2008 R2中执行此操作吗?我希望添加另一个名为rain的列,并使用每周一个值或每七行填充一个值。我当前的查询是:每n行返回一个列值
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
.......;
像'雨=情况下ROW_NUMBER()OVER(由jday顺序)%7 = 0,那么其他设为myVal 0 end' – ZLK
谢谢,工作完美!我认为它需要一个主键来使用row_number。你是否知道任何内置的SQL特性将Julian日值转换为当前日期?例如9会是09/01/yyyy?再次感谢 – Mat41
也许['DATEFROMPARTS'](https://msdn.microsoft.com/en-us/library/hh213228.aspx)就像你正在寻找的东西。当前的年/月值可以来自'DATEPART(YEAR,GETDATE())'和'DATEPART(MONTH,GETDATE())'。 **编辑:**我刚刚意识到这是SQL 2008,在这种情况下,你需要手动完成。例如'CAST(DATEPART(YEAR,GETDATE())AS VARCHAR(4))+' - '+ CAST(DATEPART(MONTH,GETDATE())AS VARCHAR(2))+' - '+ CAST(JDAY AS VARCHAR ))' – ZLK