1

次のように、1 つのテーブルの 1 つの列を更新します。

TB_クエスト:

cod_1   cod_2   cod_3   Description  Value      Date
-----------------------------------------------------------------
123     181     6401    product A   7526836    19/02/2013
123     181     6401    product B   4638607    18/02/2013
123     181     6401    product C   9633450    06/02/2013
789     314     1361    product 1   6218035    15/02/2013
789     314     1361    product 2   6189032    14/02/2013

結果は次のようになります。

cod_1   cod_2   cod_3   Description   Value      Date
-----------------------------------------------------------------
123     181     6401    product A     7526836    19/02/2013
123     181     6401    product A     4638607    18/02/2013
123     181     6401    product A     9633450    06/02/2013
789     314     1361    product 1     6218035    15/02/2013
789     314     1361    product 1     6189032    14/02/2013

誰もそれを知っていますか?

前もって感謝します。

4

3 に答える 3

2

値を選択する方法を明確にしません。1 つの方法を次に示します。

with toupdate (
     select t.*, min(description) over (partition by cod_1) as minDescription
     from t
    )
update toupdate
    set Description = minDescription

で定義された各グループの最小値に説明を設定しますcod_1。これは、質問のデータに適合します。

最新の説明が必要な場合は、サブクエリを使用してそれを行います。

[コードのアップロードの問題]

update t
    set description = 
        (select top 1 description
         XXX
         where t2.cod_1 = t.cod_1
         order by date desc)

(ここで、XXX があるサブクエリのselectとの間に「from t t2」を追加します。)where

于 2013-02-19T15:22:30.247 に答える
1
    select cod_1, cod_2,   cod_3, max(Date) as date
    From TB_Quest
    group by cod_1, cod_2,   cod_3

cod_1、cod_2、cod_3、日付を使用して TB_Quest に参加し、説明を取得してテーブルを更新します テーブルを選択して再度参加しますが、cod_1、cod_2、cod_3 のみを使用します

于 2013-02-19T15:24:32.183 に答える
0

これを試して

   update TB_Quest set Description =
      if (Description= 'product 2' , 'product 1' , 
      if(Description= 'product 1' , 'product 1',
      if (Description = 'product A' , 'product A' , 'product A' ))) 

デモSQLFIDDLEはこちら

于 2013-02-19T15:32:24.850 に答える