【问题标题】:SQL query sum unique recordsSQL 查询求和唯一记录
【发布时间】:2015-06-10 17:30:10
【问题描述】:

我正在尝试汇总销售车辆的一段时间内的所有销售额。问题是每件售出的产品都是一行,金额和价格以及账单和账单编号的总和。

所以我有 2 个选择:将已售出的产品数量乘以价格,然后相加。或将账单删除双行并求和。我选择了第二个选项。

所以现在我有一个 [Location Code](销售车辆)、[Bill No] 和一个 [Total Price]。

所以我得到:

0001    0001/00277343   10,26000000000000000000
0001    0001/00277343   10,26000000000000000000
0001    0001/00277343   10,26000000000000000000
0001    0001/00277343   10,26000000000000000000
0001    0001/00277345   10,33000000000000000000
0001    0001/00277345   10,33000000000000000000
0001    0001/00277345   10,33000000000000000000
0001    0001/00277347   24,35000000000000000000
0001    0001/00277348   30,31000000000000000000
0001    0001/00277348   30,31000000000000000000
0001    0001/00277349   2,69000000000000000000

正如您看到的重复条目,因为在一张账单上有不止一项。所以现在我只想总结唯一的价格,这样我就得到了

0001 1822,50

目前我只到此为止:

select [Location Code], [Bill No_] , Price from [Item Ledger Entry] 
where [Location Code] = '0001' and [Document Date] = '01.04.2015'

我尝试了几个,但没有一个有效。最好的结果给出了这个,但不是总和

select distinct[Bill No_], [Location Code] , Price from [Item Ledger Entry] 
where [Location Code] = '0001' and [Document Date] = '01.04.2015'

【问题讨论】:

  • 你从哪里得到1822,50
  • 你确定总结所有“不同”的价格是正确的吗?我认为,如果一张账单上卖出了更多的汽车,而且两辆车的价格相同,那么只考虑一次金额是不正确的。
  • 您使用的是哪个 dbms?
  • 我已经试过了,但是我分别拿到了每张账单(所以 105 行)而不是一天的总和(所以 1 行)。我在 2012 SQL 服务器上使用 Toad for SQL。我不想总结不同的价格,而是总结不同的账单。

标签: sql sql-server tsql sum


【解决方案1】:

我想你正在寻找这个:

SELECT [Location Code], [Bill No_], SUM(Price) AS Price
FROM (SELECT  DISTINCT [Location Code], [Bill No_] , Price from [Item Ledger Entry] 
      WHERE [Location Code] = '0001' and [Document Date] = '01.04.2015') t
GROUP BY [Location Code], [Bill No_]

【讨论】:

  • 几乎,但我让它按照我想要的方式工作。谢谢:SELECT [Location Code], SUM(Price) AS Price FROM (SELECT DISTINCT [Location Code], [Bill No_], Price from [Item Ledger Entry] WHERE [Location Code] = '0001' and [Document Date] = '01.04.2015') t GROUP BY [位置代码]
【解决方案2】:
select [Location Code], [Bill No_] , SUM(Price) from [Item Ledger Entry] 
where [Location Code] = '0001' and [Document Date] = '01.04.2015'
group by [Location Code], [Bill No_]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    相关资源
    最近更新 更多