小编典典

SQL使用Group by语句基于第二列值减去列值

sql

我有一个看起来像这样的SQL语句:

select FY_CD, PD_NO, INPUT, SUM(HOURS) 
from LABOR_TABLE
group by PD_NO, INPUT;

返回此:

FY_CD|PD_NO| INPUT |    HOURS

2008    1   Actuals     61000
2008    1   Baseline    59000
2008    2   Actuals     54000
2008    2   Baseline    59000
2008    3   Actuals     60000
2008    3   Baseline    70000

我试图弄清楚如何从每个期间的基准值中减去实际值,并返回以下内容:

FY_CD|PD_NO| INPUT |    HOURS

2008    1   Variance    2000
2008    2   Variance    -5000
2008    3   Variance    -10000

任何帮助表示赞赏。


阅读 271

收藏
2021-04-14

共1个答案

小编典典

实际上,您可以通过CASE检查的值直接直接计算出Input

SELECT  FY_CD, 
        PD_NO, 
        'Variance' INPUT, 
        SUM(CASE WHEN Input = 'Actuals' THEN HOURS ELSE -1 * HOURS END) HOURS
FROM    LABOR_TABLE
GROUP   BY PD_NO
2021-04-14