Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何删除SQL中的重复项,并为每个重复实例求和字段?_Sql_Sum_Duplicates - Fatal编程技术网

如何删除SQL中的重复项,并为每个重复实例求和字段?

如何删除SQL中的重复项,并为每个重复实例求和字段?,sql,sum,duplicates,Sql,Sum,Duplicates,我有一个SQL表,其中列出了发票的详细信息 每张发票可以有多个项目。例如,在下表中,您可以看到多条“轮渡服务”线路。这是因为有一张发票,但该发票上有五个项目(所有项目的金额不同),因此,“渡轮服务”被列出五次。另一方面,顶行“储罐衬里”在发票上只有一个项目,因此它只出现一次 我希望每个描述只列出一次(删除重复项),但是,我希望“金额”字段显示所有金额的总和。我怎样才能做到这一点 +--------------------------------+-------------------------

我有一个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。该列既不在示例数据中,也不在所需结果中。