【问题标题】:How to get the sum of Headcount on the footer part without using Union如何在不使用 Union 的情况下获得页脚部分的 Headcount 总和
【发布时间】:2017-05-05 06:37:13
【问题描述】:

如何在不使用 Union 的情况下获得页脚部分的 Headcount 总和。任何人都可以提供一些想法

SELECT DeptID, COUNT(EmpID) AS TotalHeadCount  FROM EmployeeDetails          
WHERE (datepart(yyyy,DOJ) between 2005 and 2017) and Status =0
group by DeptID
Union 
Select Count(EmpID) AS T1 From EmployeeDetails WHERE Status =0`

【问题讨论】:

  • total 没有年份条件?

标签: sql asp.net sql-server asp.net-mvc


【解决方案1】:

这是怎么回事,

SELECT DeptID, COUNT(EmpID) AS TotalHeadCount  FROM EmployeeDetails          
WHERE (datepart(yyyy,DOJ) between 2005 and 2017) and Status =0
group by DeptID WITH CUBE

【讨论】:

    【解决方案2】:

    我认为您的查询有一些语法错误。无论如何,如果总计必须具有相同的部分总计条件(年份范围也是),您可以使用这个: (我简化了创建 date_year 列的表格,但您可以替换您的条件)

    SELECT DeptID, COUNT(EmpID) AS TotalHeadCount  
    FROM EmployeeDetails 
    WHERE DATE_YEAR between 2005 and 2017 
        AND STATUS =0 
    GROUP BY DEPTID
    WITH ROLLUP
    

    样本数据:

    CREATE TABLE EmployeeDetails (EmpID INT, DEPTID INT, DATE_YEAR INT, STATUS INT);
    INSERT INTO EmployeeDetails VALUES (1,1,2004,0);
    INSERT INTO EmployeeDetails VALUES (2,1,2005,0);
    INSERT INTO EmployeeDetails VALUES (3,1,2005,0);
    INSERT INTO EmployeeDetails VALUES (4,1,2006,0);
    INSERT INTO EmployeeDetails VALUES (5,1,2007,0);
    INSERT INTO EmployeeDetails VALUES (5,1,2008,0);
    INSERT INTO EmployeeDetails VALUES (6,1,2009,0);
    

    输出:

    DeptID      TotalHeadCount
    ----------- --------------
    1           6
    NULL        6
    

    【讨论】:

    • 我在下面的代码中使用了你的逻辑,但总数以对角线方式显示 像这样 1 0 0 0 1 0 0 0 1 它正确显示了值,但为每个单独的列
    • @Alston 我在答案中添加了示例数据。我不明白你上面的评论。
    • 我已经在答案框中发布了一个查询,请看一下SIR
    • 其实这是一个新问题。你应该发布一个新的,决定(或不)投票给这个问题的任何一个答案。
    • 我可以在'Null'字段中创建一个名称
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 2011-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 2023-03-11
    相关资源
    最近更新 更多