我有一张表格,其中包含materialno,billedqty,materialdesc,startdate列。 我需要为每个材料找到billedqty的总和。这给了我重复的值(我需要不同的materialno和billedqty的总和)。这是我使用group by和join编写的查询。我想仅通过materialno进行分组,因为在其他列中我得到了错误的总和值。
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
答案 0 :(得分:0)
由于加入,您将获得重复项,无需加入即可获得预期结果。请尝试以下查询
getUser()
{
const headers: Headers = new Headers();
headers.append('Accept', 'application/json');
headers.append('Content-Type', 'application/json');
//Collect token value
this.authService.getToken().then(function(resp){
headers.append('X-Auth-Token', resp);
});
const options = new RequestOptions({headers: headers});
return this.http.get('http://localhost:9900/user',options).map(response => response.json());
}
当您使用结算表加入 test1 时,您将获得重复项,因为您的materialno =“1001”有2个相应的“ materialdesc “值和” startdate “值。但我提到的查询只返回“ materialdesc ”和“ materialno ”的“ startdate ”。