1

SQL テーブルで一括更新を実行しようとしていますが、論理的に同等のものを理解していません。私がやりたいことは、疑似コードで次のとおりです。

UPDATE mytable
SET mycolumn = (pull down the datetime from mycolumn2. if the year of that datetime is not equal to 2013, then mycolumn = 24. if the year is 2013, then mycolumn = 24 - number of months in that datetime)

この種のロジックを SQL に実装するには、どこから始めたらよいか本当にわかりません。ヒントや方向性はありますか?

ありがとう

4

3 に答える 3

1
UPDATE myTable
SET mycolumn = CASE WHEN DATEPART(year, mycolumn2) = 2013 
                        THEN 24 - DATEPART(month, mycolumn2) 
                    ELSE 24 
               END

必要に応じて、RDBMS の日付構文を調整します。

于 2013-03-01T16:47:09.263 に答える
0
UPDATE mytable
SET mycolumn = CASE WHEN YEAR(mycolumn2) <> 2013 
                    THEN 24
                    WHEN YEAR(mycolumn2) = 2013 
                    THEN 24 - mycolumn
                END
于 2013-03-01T16:47:35.223 に答える
0

ステートメントの使用Simple Case:

update mytable
set mycolumn = 24 - case year(mycolumn2) 
                        when 2013 then  month(mycolumn2)
                        else 0 
                    end
于 2013-03-01T16:58:57.367 に答える