我正在尝试为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个Case语句或者将值写入另一个表并执行SUM函数...我正在考虑一个函数,我传入7个字段的值并将它们一起添加并返回值。
有更简单的方法吗?
答案 0 :(得分: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