Sum SQL PLUS函数

时间:2016-02-23 23:30:52

标签: sql oracle sqlplus

嘿我试着添加多行,将它们组合成按商品编号排列的较小行,并按订购数量

让我说我有类似的东西

LigneCommande

|noArticle|quantity
|10       |100  
|10       |0  
|10       |0  
|20       |20    
|20       |20  
|20       |20

文章

|noArticle|Description
|10       |potato
|20       |banana
|30       |ham

预期结果:

|noArticle|totalquantity
|10       |100  
|20       |60    

我的结果:

|noArticle|totalquantity
|10       |160 
|20       |160    

在最后1个想要2行1个文章号和2个总量所以应该是10个; 100和20; 60

现在我有类似的东西

SELECT Article.noArticle, SUM (quantity) AS TOTALQUANTITY
FROM LigneCommande, Article
GROUP BY  Article.noArticle
ORDER BY Article.noArticle

事情是它总和所有的数量并以20; 160和10; 160

结束

我可能错过了OVER功能或者无法解决的问题

编辑:好吧让我清理一下我有2个表,其中有一个名为LigneCommande的文章编号和数量,只会出现数量大于0的文章。我有另一张名为Article的表,即使没有数量也有所有文章编号。最后,我想要文章中的所有文章编号和来自Ligne comande的所有文章,将这两个组合在一起的关键是noArticle(如果我不清楚,英语不是我的第一语言对不起)

2 个答案:

答案 0 :(得分:0)

我认为你的SQL中的错误是你在查询中也包含了LigneCommande表,这似乎没用。尝试:

SELECT Article.noArticle, SUM (quantity) AS TOTALQUANTITY
FROM Article
GROUP BY  Article.noArticle
ORDER BY Article.noArticle

以上假设数量是Article表中的一列。如果不是这种情况(并且LigneCommande有数量),那么您需要相应地将其加入到您的模式中(例如可能类似于以下内容)

SELECT a.noArticle, SUM (l.quantity) AS TOTALQUANTITY
FROM Article a 
Join LigneCommande l on l.noArticle = a.noArticle
GROUP BY  a.noArticle
ORDER BY a.noArticle

答案 1 :(得分:0)

您可以尝试在分组中使用rollup modifier

SELECT Article.noArticle, SUM (quantity) AS TOTALQUANTITY
FROM Article
LEFT JOIN LigneCommande ON Article.noArticle=LigneCommande.noArticle
GROUP BY ROLLUP( Article.noArticle)

您可以过滤出having子句中的总计。