分组按,SUM和更多(SQL Server)



在Microsoft SQL上,我如何做以下操作:

X公司在DB中有3张发票。X有类型1的发票和19%的增值税。Y公司DB中有5张发票Y有2型发票,增值税5%。

X公司的例子:Type: 1, NameOfCompany: X, BaseOfVAT: 19, Tax1: 1500, Tax2: 2000, Tax3: 3500
Type: 1, NameOfCompany: X, BaseOfVAT: 19, Tax1: 1000, Tax2: 1000, Tax3: 3500
Company Y示例:
Type: 2, NameOfCompany: X, BaseOfVAT: 19, Tax1: 1500, Tax2: 1000, Tax3: 3500

Company Y示例:
Type: 2, NameOfCompany: Y, BaseOfVAT: 5, Tax1: 1200, Tax2: 2100, Tax3: 100
Type: 2, NameOfCompany: Y, BaseOfVAT: 5, Tax1: 1500, Tax2: 2000, Tax3: 500
Type: 1, NameOfCompany: Y, BaseOfVAT: 5, Tax1: 1500, Tax2: 2000, Tax3: 500
Type: 1, NameOfCompany: Y, BaseOfVAT: 5, Tax1: 1500, Tax2: 2000, Tax3: 500
Type: 1, NameOfCompany: Y, BaseOfVAT: 5, Tax1: 1500, Tax2: 2000, Tax3: 500这两家公司各有许多不同的发票。

如何总结成这样:

Type: 1, NameOfCompany: X, BaseOfVAT: 19, Tax1: 2500, Tax2: 3000, Tax3: 7000(这是Type:1的所有内容的总和,但不是来自某些列,如BaseOfVAT和Type:1)
Type: 2, NameOfCompany: X, BaseOfVAT: 19, Tax1: 1500, Tax2: 2000, Tax3: 3500

Type: 2, NameOfCompany: Y, BaseOfVAT: 5, Tax1: 2700, Tax2: 4100, Tax3: 600
(这是Type:2的所有内容的总和,但不是来自某些列,如BaseOfVAT和Type:2)
Type: 1, NameOfCompany: Y, BaseOfVAT: 5, Tax1: 1500, Tax2: 2000, Tax3: 3500

简而言之:

总结除某些列外的所有内容,按公司和BaseOfVAT和类型对它们进行分组,将结果加入到Temp表中。我希望我说得够清楚。

如果没有,请原谅,当我连续时间少的时候我会重新制定

应该在GROUP BY语句中使用所有分组列。试试这个:

SELECT Type, NameOfCompany, BaseOfVAT, SUM(Tax1), SUM(Tax2), SUM(Tax3)
FROM table1
GROUP BY Type, NameOfCompany, BaseOfVAT
UNION ALL
SELECT Type, NameOfCompany, BaseOfVAT, SUM(Tax1), SUM(Tax2), SUM(Tax3)
FROM table2
GROUP BY Type, NameOfCompany, BaseOfVAT;

这适用于公司X数据和公司Y数据在不同表中的情况。

乌利希期刊指南

如果公司在同一个表中,您需要将值插入到另一个表中,然后尝试:

INSERT INTO #temptable (column1, column2, column3, column4, column5, column6) -- use real column names with correct order
SELECT Type, NameOfCompany, BaseOfVAT, SUM(Tax1), SUM(Tax2), SUM(Tax3)
FROM table
GROUP BY Type, NameOfCompany, BaseOfVAT

相关内容

  • 没有找到相关文章