我有一个临时表,如下面的屏幕截图所示。我使用SP填充此表作为生成报告的中间步骤。
此表包含员工ID,PID(工作地点)以及从1日到31日的天数。如果员工工作了一天班次,则由D
表示,夜班由N
表示。如果一名员工已经进行了两次轮班工作,则表示为D/N
。现在我必须得到总计最后一列如下。
sub_totals
- 分别为“D”和“N”。恩。 “15/08”shift_totals
- 总共轮班。恩。 “23”(所有“D”和“N”)day_totals
- 工作天数(D,N和D / N的数量)ex。 “20” NOT:在计算day-total
时,“D / N”应被视为一天工作。
最后,我想在报告中显示这一点。 (开发语言是C#,我正在使用ADO.NET)
有人可以告诉我如何在SQL中执行此操作吗?
答案 0 :(得分:1)
你必须做这样的事情:
SELECT
EmployeeID,
PID,
(
CASE WHEN [1] = 'D' OR [1] = 'N' THEN 1 ELSE IF [1] = 'D/N' THEN 2 ELSE 0 END
+ CASE WHEN [2] = ...
+ ...
+ CASE WHEN [31] = 'D' OR [31] = 'N' .....
) AS shift_totals,
(
CASE WHEN [1] IS NOT NULL THEN 1 ELSE 0 END
+ CASE WHEN [2] IS ...
+ ...
) AS day_totals