0

行が SQL Server でチェックされた場合の数値を計算しようとしています。これは、.NET コードを使用してクライアント側で行ったことがあります。ユーザーベースが入力テーブルのようなExcelスプレッドシートを受け取ったので、SQL Serverスクリプト内でこれを実行しようとしています。

曜日の例

Sun = 1
Mon = 2
Tue = 4
Wed = 8
Thr = 16
Fri = 32
Sat = 64

入力テーブル

SYSID SUN MON TUE WED THR FRI SAT
----- --- --- --- --- --- --- ---
  1    0   0   1   0   1   0   0
  2    1   1   1   1   1   1   1
  3    0   0   0   1   0   0   1

望ましい結果

SYSID DayOfWeek
----- ---------
  1      20
  2      127
  3      68

128個のCaseステートメントを書かずに、または値を別のテーブルに書き込んでSUM関数を実行する...7つのフィールドの値を渡し、それらを合計して値を返す関数を考えています。

これを行う簡単な方法はありますか?

4

1 に答える 1

1

あなたが何をしようとしているのか理解できれば、次のようなことがうまくいくかもしれません:

SELECT (CASE WHEN SUN=1 THEN 1  ELSE 0 END)
    +  (CASE WHEN MON=1 THEN 2  ELSE 0 END)
    +  (CASE WHEN TUE=1 THEN 4  ELSE 0 END)
    +  (CASE WHEN WED=1 THEN 8  ELSE 0 END)
    +  (CASE WHEN THU=1 THEN 16 ELSE 0 END)
    +  (CASE WHEN FRI=1 THEN 32 ELSE 0 END)
    +  (CASE WHEN SAT=1 THEN 64 ELSE 0 END)
    AS DayOfWeek
FROM InputTable
于 2013-04-25T17:32:38.580 に答える