2016-11-30 9 views
1

私はSQLに新しいので、いくつかの助けが必要でした。私はいくつかの数値を持っているテーブルを持っている、私はテーブル内の他の列からの計算と列(すべての値null)を設定する必要があります。 たとえば、私はいくつかの値と合計値を持っています。私はこれらの2つの間のパーセンテージを計算するために別の列が必要です。複数の列を1つずつ集計するにはどうすればよいですか?

私は、さまざまな列に基づいて計算から移入する必要がある多くの列を持っています。たとえば。列名「risk1」は、「1per」と呼ばれる別の列を計算して入力するのに役立ちます。

UPDATE DPRA2_Export 
    SET "1Per" = ((CAST(Risk1 AS DECIMAL (38,2))/CAST(GrandTotal AS DECIMAL(38,2))) * 100); 

UPDATE DPRA2_Export 
    SET "2Per" = ((CAST(Risk2 AS DECIMAL (38,2))/CAST(GrandTotal AS DECIMAL(38,2))) * 100); 

UPDATE DPRA2_Export 
    SET "3Per" = ((CAST(Risk3 AS DECIMAL (38,2))/CAST(GrandTotal AS DECIMAL(38,2))) * 100); 

.................

それはこのように行く:私のコードは次のようになります。

何度も何度も繰り返し書き込むのではなく、このことを繰り返しできる方法がありますか?コードで変更されるのは列名「Risk%」とSET列名「%Per」だけです

アイデアはありますか?

+0

テーブルにはいくつの列がありますか? –

+0

現在は5つありますが、それは上がります。可能であれば、これを行うためのダイナミックな方法が必要でした。 –

+0

正直なところ、いくつかの列では、標準的な更新ステートメントを維持するよりも動的なものを書くほうが時間がかかります。 –

答えて

0

まず、 - 、、 - という名前の列を持つ。 。 。 - 疑わしい。一般に、この形式はリレーショナルデータベースには適していません。代わりに、データはリスクごとに1つの行とリスクの識別子で格納する必要があります。

このようなテーブルは、多くの場合、出力の目的では役に立ちますが、データの格納には役に立ちません。

第2に、部門のデータタイプはおそらく完全に不要です。整数除算を行うデータベースを使用していて、値が整数の場合、 '* 1.0'のような簡単な方法で変換できます。

最後に、あなたは、単一のupdateを発行することができます

UPDATE DPRA2_Export 
    SET "1Per" = Risk1*1.0/GrandTotal, 
     "2Per" = Risk2*1.0/GrandTotal, 
     "3Per" = Risk3*1.0/GrandTotal ; 

あなたはinformation_schemaテーブルを使用して、列を照会することにより、ロジックを構築することができます。

+0

このヒントをお寄せいただきありがとうございます!私はまだSQLのハングを取得しています –

関連する問題