2017-03-16 18 views
1

私は主キーを持たないテーブルで単純な選択をしています。私は365の値を抽出しています。毎年1つの値が抽出されます。 SQL Server 2008 R2でこれを行うことは可能ですか?私はrainという別の列を追加して、1週間に1つの値、または7行に値を設定したいと考えています。現在のクエリは次のとおりです。n個の行ごとに列の値を返します

SELECT jDay, tMax, tMin 
FROM tableName; 

最初の3つの列が返されます。どのように私はそれがこのように見えるように雨の列を達成します:

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 end' – ZLK

+0

他に、その後myval ROW_NUMBER()(jdayによって順)%以上7 = 0はありがとう、完璧な作品! row_numberを使用するには、主キーが必要だと思った。ジュリアンの日の値を現在の年の日付に変換するための組み込みSQL機能を知っていますか?たとえば9は09/01/yyyyですか?もう一度おねがいします – Mat41

+0

恐らく['DATEFROMPARTS'](https://msdn.microsoft.com/en-us/library/hh213228.aspx)はあなたが探しているもののようなものです。現在の年/月の値は、 'DATEPART(YEAR、GETDATE())'と 'DATEPART(MONTH、GETDATE()) 'から得られます。 **編集:**私はこれがSQL 2008のためのものであることを認識しました。この場合、手動で行う必要があります。例えば(2))+ ' - ' + CAST(JDAY AS VARCHAR(2)) '+' - '+ CAST(DATEPART(月、GETDATE())AS VARCHAR )) ' – ZLK

答えて

1

MODULO (%)ROW_NUMBER()を使用して、すべてのX列値を指定することができます。

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