【问题标题】:Update a table with data from a second table passing a condition from a third使用第二个表中的数据更新表,并传递第三个表中的条件
【发布时间】:2015-04-02 02:35:33
【问题描述】:

根据以下条件和场景,我在更新表格列时遇到了一些困难。

条件表:

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               

归根结底,当Condition Table 中的值大于零时,我希望Input Table Total Valid Consulting 具有Data Table 的总和。

例如,EmpId A1Total Valid Consulting 仅是 Consulting-B + Consulting-C(来自 Data Table),因为在 Condition Table 中,EmpID A1 仅具有大于零的 Consulting-BConsulting-C 值。

所以我只想添加其他表中的值大于零的列数据。有没有办法在 SQL Server 中这样做?这是我的更新声明,我有问题要提出。

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

【问题讨论】:

    标签: sql sql-server sql-update case


    【解决方案1】:

    你可以使用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
    

    【讨论】:

    • 很高兴我能帮上忙。如果有帮助,您可以将其标记为答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 2014-11-16
    相关资源
    最近更新 更多