使用第二个表中的数据更新表,该表传递来自第三个的条件

时间:2015-04-02 02:35:34

标签: sql sql-server sql-update case

我根据以下条件和方案更新表列时遇到了一些困难。

条件表:

EmpID   Consulting-A    Consulting-B    Consulting-C
A1      0               10              20
A2      50              30              0
A3      0               0               70

数据表:

EmpID   Consulting-A    Consulting-B    Consulting-C
A1      10000           20000           30000
A2      0               35000           15000
A3      0               8000            0

输入表:

EmpID   [Total Valid Consulting]   
A1      20000 + 30000 = 50000          
A2      0 + 35000 = 35000               
A3      0               

在一天结束时,我希望Input Table Total Valid ConsultingData Table中的值大于零时,其总和为Condition Table。< / p>

例如,Total Valid Consulting的{​​{1}}仅为EmpId A1(来自Consulting-B + Consulting-C),因为Data Table Condition Table只有EmpID A1 { {1}}和Consulting-B值大于零。

所以我想只添加具有来自另一个表的值大于零的列数据。有没有办法在SQL Server中这样做?这是我的更新声明,我有问题想出来。

感谢任何帮助和建议。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用CASE声明

INSERT INTO Input
    SELECT  EmpID,
            CASE WHEN C.[Consulting-A] > 0 THEN CT.[Consulting-A] ELSE 0 END +
            CASE WHEN C.[Consulting-B] > 0 THEN CT.[Consulting-B] ELSE 0 END +
            CASE WHEN C.[Consulting-C] > 0 THEN CT.[Consulting-C] ELSE 0 END AS f
    FROM Condition AS C
    INNER JOIN Data AS CT ON C.EmpID = CT.EmpID