【问题标题】:Conditional calculation on different columns不同列的条件计算
【发布时间】:2021-09-11 09:59:23
【问题描述】:

我有这张表,我需要在 SQL Server 中计算不同的列

到目前为止,我已经能够使用这个公式 line_item_total_including_gst / 11 计算 line_item_total_gst 列,使用下面的语法,其中行为空:

UPDATE dbo.invoice_info
    SET line_item_total_gst = line_item_total_including_gst / 11
WHERE line_item_total_gst IS NULL;

我的问题是如何根据条件进行计算,例如如果gst_applicable 列等于“是”,则执行上述计算。否则,如果 gst_applicable 等于“否”,则 line_item_total_gst 为 0。

【问题讨论】:

  • 可以使用CASE表达式
  • 你会怎么做?
  • CASE WHEN ... THEN ... ELSE ... END 文档和示例请参考链接
  • 根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或输入到问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。

标签: sql sql-server tsql sql-update mssql-jdbc


【解决方案1】:

您可以使用case 表达式:

UPDATE dbo.invoice_info
SET    line_item_total_gst = 
       CASE gst_applicable  WHEN 'Yes' THEN line_item_total_including_gst / 11
                            ELSE 0
       END
WHERE  line_item_total_gst IS NULL;

【讨论】:

  • 完美,非常感谢您的帮助
【解决方案2】:

你可以试试这个更新:

UPDATE dbo.invoice_info
    SET line_item_total_gst = line_item_total_including_gst / 11
WHERE line_item_total_gst IS NULL AND gst_applicable ='YES';

UPDATE dbo.invoice_info
    SET line_item_total_gst = 0
WHERE line_item_total_gst IS NULL AND gst_applicable ='No';

如果要选择有计算的表:

SELECT
      gst_applicable
     ,line_item_total_excluding_gst
     ,CASE WHEN gst_applicable = 'Yes' AND line_item_total_gst IS NULL 
           THEN   line_item_total_including_gst / 11
      WHEN gst_applicable = 'Yes' AND line_item_total_gst IS NOT NULL
           THEN   line_item_total_gst 
      ELSE
                  0
      END AS line_item_total_gst
     ,line_item_total_including_gst 
FROM dbo.invoice_info

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-09
    • 1970-01-01
    • 2019-05-20
    • 1970-01-01
    • 2022-09-22
    • 1970-01-01
    相关资源
    最近更新 更多