如何删除SQL中的重复项,并为每个重复实例求和字段?
我有一个SQL表,其中列出了发票的详细信息 每张发票可以有多个项目。例如,在下表中,您可以看到多条“轮渡服务”线路。这是因为有一张发票,但该发票上有五个项目(所有项目的金额不同),因此,“渡轮服务”被列出五次。另一方面,顶行“储罐衬里”在发票上只有一个项目,因此它只出现一次 我希望每个描述只列出一次(删除重复项),但是,我希望“金额”字段显示所有金额的总和。我怎样才能做到这一点如何删除SQL中的重复项,并为每个重复实例求和字段?,sql,sum,duplicates,Sql,Sum,Duplicates,我有一个SQL表,其中列出了发票的详细信息 每张发票可以有多个项目。例如,在下表中,您可以看到多条“轮渡服务”线路。这是因为有一张发票,但该发票上有五个项目(所有项目的金额不同),因此,“渡轮服务”被列出五次。另一方面,顶行“储罐衬里”在发票上只有一个项目,因此它只出现一次 我希望每个描述只列出一次(删除重复项),但是,我希望“金额”字段显示所有金额的总和。我怎样才能做到这一点 +--------------------------------+-------------------------
+--------------------------------+--------------------------------+----------+----+--------------+--------+-----------+
| Description | LineDescription | Amount | UM | UnitCost | Units | GrossAmt |
+--------------------------------+--------------------------------+----------+----+--------------+--------+-----------+
| Tank Liner | 3 FBE Bolted Steel Circular L | 18035.13 | EA | 327911.30000 | 1.000 | 327911.30 |
| Delivery Tanks to Site | Bolted Steel Liner Tank | 8184.92 | EA | 148816.76000 | 1.000 | 148816.76 |
| Circular Tanks | Circular Tank (Inv 4556) | 5689.78 | EA | 103450.66000 | 1.000 | 103450.66 |
| Fit Ext Nut Caps to Tank 2 | Fit External Nut Caps to Tank | 2141.93 | EA | 1947.21000 | 1.000 | 1947.21 |
| Replace Platform on Tank 3 | Replace Platform on Tank 3 -- | 43356.50 | EA | 39415.00000 | 1.000 | 39415.00 |
| Retention held Inv 1758 | Road Furniture and Street Sign | 7621.22 | LS | 0.00000 | 0.000 | 11138.00 |
| ferry service | Fares to QIR | -50.00 | EA | 45.45400 | -1.000 | -45.45 |
| ferry service | Fares to QIR | -699.00 | EA | 635.45400 | -1.000 | -635.45 |
| ferry service | Fares to QIR | 69.99 | EA | 63.64000 | 1.000 | 63.64 |
| ferry service | Fares to QIR | -60.01 | EA | 54.54500 | -1.000 | -54.55 |
| ferry service | Fares to QIR | 275.00 | EA | 250.00000 | 1.000 | 250.00 |
| Rentry of invoice 104759A | Tank 2 - 2.5ML | 95039.64 | EA | 103450.60000 | 1.000 | 103450.60 |
| Rentry of invoice 104759A | Tank 2 - 2.5ML | 20631.62 | EA | 103450.60000 | 1.000 | 103450.60 |
| Rent8-10Rooksby;21&15Morgan | 8-10 Rooksby W/shop office May | 1560.63 | LS | 0.00000 | 0.000 | 1418.75 |
| Rent8-10Rooksby;21&15Morgan | 15 Morgan St Fabrication May14 | 2079.18 | LS | 0.00000 | 0.000 | 1890.16 |
| Credit J.Wagner wrong sizeBoot | JOE WAGNER-CREDIT WRONG SIZE B | -127.60 | EA | 116.00000 | -1.000 | -116.00 |
| Pipe Raiser and Freight | Supply 65 x 600mm Gal Pipe Ris | 114.40 | EA | 52.00000 | 2.000 | 104.00 |
| Pipe Raiser and Freight | Freight | 22.00 | EA | 20.00000 | 1.000 | 20.00 |
| Phil Mansfield - Uniforms | PHIL MANSFIELD-JEANS SZ 77R | 92.40 | EA | 28.00000 | 3.000 | 84.00 |
| traffic management | Traffic Controllers x 3, vehi | 1162.43 | EA | 1056.75000 | 1.000 | 1056.75 |
| Belts | 11A1030 Gates Belts | 24.64 | EA | 11.20000 | 2.000 | 22.40 |
| Relay, Tubing, Buzzer, Cable T | CPX4150 Service Valve Core Hig | 36.52 | EA | 33.20000 | 1.000 | 33.20 |
| Relay, Tubing, Buzzer, Cable T | ACX5018BL Warning Buzzer 24V 7 | 11.28 | EA | 10.25000 | 1.000 | 10.25 |
| Relay, Tubing, Buzzer, Cable T | ACX1294 Heat Shrink D/Wall Bla | 12.10 | EA | 11.00000 | 1.000 | 11.00 |
+--------------------------------+--------------------------------+----------+----+--------------+--------+-----------+
例如,与此相反:
+---------------+-----------------+---------+
| Description | LineDescription | Amount |
+---------------+-----------------+---------+
| ferry service | Fares to QIR | -50.00 |
| ferry service | Fares to QIR | -699.00 |
| ferry service | Fares to QIR | 69.99 |
| ferry service | Fares to QIR | -60.01 |
| ferry service | Fares to QIR | 275.00 |
+---------------+-----------------+---------+
我想看看这个:
+---------------+-----------------+---------+
| Description | LineDescription | Amount |
+---------------+-----------------+---------+
| ferry service | Fares to QIR | -464.02 |
+---------------+-----------------+---------+
仅供参考,这是我的问题:
select Description, LineDescription, Amount, UM, UnitCost, Units, GrossAmt, from brvAPAllInvoices
Where PaidDate is null and APCo = 1 and Type = 'P'
您需要的是使用
groupby
进行基本聚合,但挑战是LineDescription
。例如,它们都是相同的。对其他人来说,它们是不同的。你可以做一件事:
select description, min(LineDescription) as LineDescription, sum(Amount) as Amount
from table t
group by description;
编辑:
您需要对不在分组依据
中的所有列使用聚合函数。以下是我对可能对您有所帮助的最佳猜测:
select Description, min(LineDescription), sum(Amount), min(UM), avg(UnitCost),
sum(Units), sum(GrossAmt)
from brvAPAllInvoices
Where PaidDate is null and APCo = 1 and Type = 'P'
group by Description;
您需要的是使用
groupby
进行基本聚合,但挑战是LineDescription
。例如,它们都是相同的。对其他人来说,它们是不同的。你可以做一件事:
select description, min(LineDescription) as LineDescription, sum(Amount) as Amount
from table t
group by description;
编辑:
您需要对不在分组依据
中的所有列使用聚合函数。以下是我对可能对您有所帮助的最佳猜测:
select Description, min(LineDescription), sum(Amount), min(UM), avg(UnitCost),
sum(Units), sum(GrossAmt)
from brvAPAllInvoices
Where PaidDate is null and APCo = 1 and Type = 'P'
group by Description;
您需要的是使用
groupby
进行基本聚合,但挑战是LineDescription
。例如,它们都是相同的。对其他人来说,它们是不同的。你可以做一件事:
select description, min(LineDescription) as LineDescription, sum(Amount) as Amount
from table t
group by description;
编辑:
您需要对不在分组依据
中的所有列使用聚合函数。以下是我对可能对您有所帮助的最佳猜测:
select Description, min(LineDescription), sum(Amount), min(UM), avg(UnitCost),
sum(Units), sum(GrossAmt)
from brvAPAllInvoices
Where PaidDate is null and APCo = 1 and Type = 'P'
group by Description;
您需要的是使用
groupby
进行基本聚合,但挑战是LineDescription
。例如,它们都是相同的。对其他人来说,它们是不同的。你可以做一件事:
select description, min(LineDescription) as LineDescription, sum(Amount) as Amount
from table t
group by description;
编辑:
您需要对不在分组依据
中的所有列使用聚合函数。以下是我对可能对您有所帮助的最佳猜测:
select Description, min(LineDescription), sum(Amount), min(UM), avg(UnitCost),
sum(Units), sum(GrossAmt)
from brvAPAllInvoices
Where PaidDate is null and APCo = 1 and Type = 'P'
group by Description;
这就是
groupby
的作用。您需要按说明和行说明列进行分组:
SELECT Description, LineDescription, SUM(Amount) AS Amount
FROM Table1
GROUP BY Description, LineDescription
请注意,这将为Description
和LineDescription
的每个组合生成不同的输出行,这就是分组依据的作用。您需要按说明和行说明列进行分组:
SELECT Description, LineDescription, SUM(Amount) AS Amount
FROM Table1
GROUP BY Description, LineDescription
请注意,这将为Description
和LineDescription
的每个组合生成不同的输出行,这就是分组依据的作用。您需要按说明和行说明列进行分组:
SELECT Description, LineDescription, SUM(Amount) AS Amount
FROM Table1
GROUP BY Description, LineDescription
请注意,这将为Description
和LineDescription
的每个组合生成不同的输出行,这就是分组依据的作用。您需要按说明和行说明列进行分组:
SELECT Description, LineDescription, SUM(Amount) AS Amount
FROM Table1
GROUP BY Description, LineDescription
请注意,这将为Description
和LineDescription
的每个组合生成不同的输出行。这将生成错误消息:Msg 8120,级别16,状态1,第1行列“brvAPAllInvoices.DueDate”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@user3674701。该列既不在示例数据中,也不在所需结果中。这会生成一条错误消息:Msg 8120,级别16,状态1,第1行列“brvAPAllInvoices.DueDate”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@user3674701。该列既不在示例数据中,也不在所需结果中。这会生成一条错误消息:Msg 8120,级别16,状态1,第1行列“brvAPAllInvoices.DueDate”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@user3674701。该列既不在示例数据中,也不在所需结果中。这会生成一条错误消息:Msg 8120,级别16,状态1,第1行列“brvAPAllInvoices.DueDate”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在GROUP BY子句中。@user3674701。该列既不在示例数据中,也不在所需结果中。