如何计算MS SQL中具有特定数据的列数

时间:2014-07-30 08:10:50

标签: c# sql sql-server ado.net reportviewer

我有一个临时表,如下面的屏幕截图所示。我使用SP填充此表作为生成报告的中间步骤。

enter image description here

此表包含员工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中执行此操作吗?

1 个答案:

答案 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