如何关联两张月度税表并创建符合要求的SQL视图?
发票税按月统计视图创建方案
需求说明
基于表TumFaturaTbl创建视图,需包含以下内容:
MyInvoiceTax:销售发票(FaturaTuru=1)的月度税总额,无对应数据时显示0CustomerInvoiceTax:采购发票(FaturaTuru=0)的月度税总额,无对应数据时显示0Month:月份名称(如"January"),按月份维度分组统计
优化后的SQL视图代码
无需嵌套查询关联,直接用条件聚合即可实现需求,代码简洁且性能更优:
CREATE VIEW InvoiceTaxByMonth AS SELECT DATENAME(MONTH, Tarih) AS Month, ISNULL(SUM(CASE WHEN FaturaTuru = 1 THEN KdvTutari ELSE 0 END), 0) AS MyInvoiceTax, ISNULL(SUM(CASE WHEN FaturaTuru = 0 THEN KdvTutari ELSE 0 END), 0) AS CustomerInvoiceTax FROM TumFaturaTbl GROUP BY DATENAME(MONTH, Tarih)
代码说明
- 条件聚合逻辑:通过
CASE语句筛选对应发票类型的KdvTutari字段,再用SUM完成月度总额统计,避免了多次查询和表关联的繁琐操作 - 空值处理:
ISNULL(..., 0)确保当某类发票当月无数据时,对应字段显示0而非NULL,符合需求要求 - 分组统计:直接按月份名称分组,一次扫描表即可完成所有统计,性能优于嵌套查询关联的方式
原尝试的问题分析
你之前的两个单独查询分别统计了两类发票的月度税,但嵌套关联时容易出现月份缺失的问题——比如某类发票当月无数据时,关联后会丢失该月份的完整记录,而条件聚合能保证所有出现过的月份都被统计,且两类数据同属一行展示。
内容的提问来源于stack exchange,提问作者Atici Brk
相关产品推荐
相关产品推荐

