嘿我试着添加多行,将它们组合成按商品编号排列的较小行,并按订购数量
让我说我有类似的东西
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(如果我不清楚,英语不是我的第一语言对不起)
答案 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子句中的总计。