我有一个表,其中有materialno、billedqty、materialdesc、startdate列。我需要找到每个物料编号的开票数量之和。这给我重复的值(我需要不同的物料编号和帐单数量的总和)。这是我使用group by和join编写的查询。我想按materialno分组,只是因为通过其他列我得到了错误的sum值。
create table test1(
materialno string,
BilledQtysum Double)
stored as ORCFILE;
insert into table test1
select materialno,sum(BilledQty) from billing group by materialno;
select s1.MaterialNo,s1.Material_Description,s1.BilledQty,s2.BilledQtysum,s1.Start_Date
from test1 s2 join billing s1 on s2.materialno=s1.materialno;
Billing Table:
materailno billedqty materaildesc startdate
1001 | 22 | materail1 |2017-05-23
1002 | 25 | materail2 |2012-04-29
1003 | 30 | materail2 |2013-02-03
1001 | 22 | materail2 |2013-02-03
Expected Result:
materailno billedqty materaildesc startdate
1001 | 44 | materail1 |2017-05-23
1002 | 25 | materail2 |2012-04-29
1003 | 30 | materail2 |2013-02-03
my result:
materailno billedqty materaildesc startdate
1001 | 44 | materail1 |2017-05-23
1002 | 25 | materail2 |2012-04-29
1003 | 30 | materail2 |2013-02-03
1001 | 44 | materail2 |2013-02-03
1条答案
按热度按时间vlf7wbxs1#
由于join,您得到了重复的结果,您可以在没有join的情况下获得预期的结果。尝试下面的查询
当您将test1与billing table连接在一起时,会得到重复的结果,因为materialno=“1001”有两个对应的“materialdesc”值和“startdate”值。但是我提到的查询只返回第一个“materialdesc”和“materialno”的“startdate”。