SQL查询:如何让采购贷项的金额显示为负数?
解决方案:实现采购发票正金额、贷项负金额
当然可以实现这个需求,只需要在查询采购贷项的部分,把金额字段的值取反即可。具体做法是在UNION ALL的第二个SELECT语句中,将C_NETAMOUNT、C_GROSSAMOUNT、C_TAXAMOUNT这三个字段乘以-1,这样贷项的金额就会以负数形式展示,后续汇总时就能自动和发票金额相减,而不是相加。
修改后的完整查询语句如下:
SELECT T_PURCHASEINVOICE.C_ID, T_PURCHASEINVOICE.C_DATE, T_PURCHASEINVOICE.C_NUMBER, T_PURCHASEINVOICE.C_NETAMOUNT, T_PURCHASEINVOICE.C_GROSSAMOUNT, T_PURCHASEINVOICE.C_TAXAMOUNT, T_TAXRATE.C_CODE FROM T_PURCHASEINVOICE (NOLOCK) JOIN T_PURCHASEINVOICE_TAXLINE (NOLOCK) ON T_PURCHASEINVOICE.C_ID = T_PURCHASEINVOICE_TAXLINE.C__OWNER_ JOIN T_TAXRATE (NOLOCK) ON T_PURCHASEINVOICE_TAXLINE.C_TAXRATE = T_TAXRATE.C_ID WHERE T_TAXRATE.C_CODE = '01' AND T_PURCHASEINVOICE.C_TAXAMOUNT <> 0 UNION ALL SELECT T_PURCHASECREDITNOTE.C_ID, T_PURCHASECREDITNOTE.C_DATE, T_PURCHASECREDITNOTE.C_NUMBER, T_PURCHASECREDITNOTE.C_NETAMOUNT * -1, -- 取反贷项净额 T_PURCHASECREDITNOTE.C_GROSSAMOUNT * -1, -- 取反贷项总额 T_PURCHASECREDITNOTE.C_TAXAMOUNT * -1, -- 取反贷项税额 T_TAXRATE.C_CODE FROM T_PURCHASECREDITNOTE (NOLOCK) JOIN T_PURCHASECREDITNOTE_TAXLINE (NOLOCK) ON T_PURCHASECREDITNOTE.C_ID = T_PURCHASECREDITNOTE_TAXLINE.C__OWNER_ JOIN T_TAXRATE (NOLOCK) ON T_PURCHASECREDITNOTE_TAXLINE.C_TAXRATE = T_TAXRATE.C_ID WHERE T_TAXRATE.C_CODE = '01'
说明:
- 采购发票部分保持原有逻辑,金额为正数;
- 采购贷项部分的三个金额字段通过
* -1取反,转为负数,完全符合你需要的“发票正、贷项负”的展示效果; - 这种修改不会影响其他字段的取值,仅调整金额字段的符号,后续进行汇总计算时,负数的贷项金额会自动冲减正数的发票金额。
内容的提问来源于stack exchange,提问作者RISL2023
相关产品推荐
相关产品推荐

