【发布时间】:2013-03-25 10:58:12
【问题描述】:
我有一个像这样的考勤表
user_name | Col | col2 | Col3 | Col4 + other columns.
person1 | a | 3 | 76 | 56 etc. ---------> sum of row
person2 | 6 | 72 | a | 13 etc. ---------> sum of row
其中“a”表示不存在,因此我需要添加一行中的所有列并显示在最后一列中,即“total”中,这样应该忽略“a”并计算一行中剩余列的总和应该添加并显示在最后一列的行中
【问题讨论】:
-
为什么这不是
NULL代表不存在的数字数据类型?事实上,为什么你有 31 列?只需有一个带有empno,date,value的表格,每个出勤记录都有一行。您实际使用的是什么 RDBMS? -
@MartinSmith 是对的。每个月的每一天(二月呢?)的专栏既浪费又低效。只需将员工缺勤的日期记录为
dates,如果没有特定日期的记录,则表示该员工出席了。 -
首先您的数据库设计不佳。一种解决方案是您需要使用 case 语句并将 a 更改为 o 并转换为整数以求和。
标签: c# asp.net mysql sql sql-server