添加Sum列以显示其唯一值

时间:2017-09-19 12:51:01

标签: sql sql-server

想知道你是否可以帮助我解决这个问题。 我们有一个名为Part_Locations的表。此表包含Part_IDLocation IDQTY

的列表

我创建了一个效果很好的Parts By Location报告,但现在用户想知道该部分的总数是多少。

我试过了:

SELECT part_id,qty, SUM(qty) 
FROM part_location 
GROUP BY part_id

但是回归:

Msg 8120, Level 16, State 1, Line 1
Column 'part_location.QTY' is invalid in the select list because it is not 
contained in either an aggregate function or the GROUP BY clause.

当我尝试:

SELECT part_id, SUM(qty) 
FROM part_location 
GROUP BY part_id 

我得到QTY总和,但后来我失去了每个位置有多少部分的可见性。

我想要实现的目标:

enter image description here

4 个答案:

答案 0 :(得分:1)

您可以添加此窗口功能以选择部分查询

SUM(qty) OVER(PARTITION BY part_id) SumQty
像这样;

SELECT 
  part_id, 
  qty, 
  SUM(qty) OVER(PARTITION BY part_id) SumQty  
FROM part_location 

答案 1 :(得分:0)

您不想要汇总查询。您想使用窗口函数:

var input = "https://www.example.com?budget=0-&year=0-&kms=0-&so=-1&sc=-1&pn=1";
var url = input.replace('?', '');
var removeFilterSet = {"so" : true,"kms" : true,"pn" : true};
var params = url.split("&");
for(var i = params.length ; i-- > 0  ; )
{
    if(removeFilterSet[params[i].split("=")[0]])
    {
        params.splice(i,1);
    }
}
alert(params.join("&"));

答案 2 :(得分:0)

我认为此查询的主要概念问题是您在返回的结果集中混合了qtySUM(qty)。删除qty,你应该没问题

答案 3 :(得分:0)

尝试这样:

SELECT 
pl.part_id,
pl.qty,
(SELECT SUM(p.qty) FROM part_location p WHERE p.part_id = pl.part_id)
FROM part_location pl