0

我正在尝试计算 SQL Server 中是否检查行的数值。我之前在客户端使用 .NET 代码完成了此操作。我正在尝试在 SQL Server 脚本中执行此操作,因为基于用户的用户为我提供了一个类似于输入表的 excel 电子表格。

星期几示例

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 条案例语句或将值写入另一个表并执行 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 回答