SQL group by 的用法 求解,该如何解决
SQL group by 的用法 求解
有一批商品,每个同种商品,可以分为多个批号。
比如:
ID :标识
name :商品名称
pihao :商品生产批号
num :该批号商品的数量
maxtime :商品有效期
--------------------------
现有如下数据:
ID name pihao num maxtime
1 a1 1 10 2012-12-12
2 a1 1 100 2012-12-12
3 a1 2 11 2012-12-12
4 a2 1 2 2012-12-12
5 a3 1 5 2012-12-12
----------------------------------------------
我想要的结果是:
---------------------------
name pih num maxtime
a1 1 10+100 2012-12-12
a1 2 11 2012-12-12
a2 1 2 2012-12-12
a3 1 5 2012-12-12
----------------------------------------
我自己写的如下:
select a.nnn,a.name,b.maxtime
FROM (select sum(num) as nnn ,name from table ) a,
INNER JOIN
table b
ON a.name = b.name
GROUP BY a.nnn,a.name,b.maxtime
-------------------------------------
得到的结果:
name pih num maxtime
a1 1 10+100+11 2012-12-12
a1 2 10+100+11 2012-12-12
a2 1 2 2012-12-12
a3 1 5 2012-12-12
很明显a1两个不同批号的,统计的数量不对
------解决方案--------------------
有一批商品,每个同种商品,可以分为多个批号。
比如:
ID :标识
name :商品名称
pihao :商品生产批号
num :该批号商品的数量
maxtime :商品有效期
--------------------------
现有如下数据:
ID name pihao num maxtime
1 a1 1 10 2012-12-12
2 a1 1 100 2012-12-12
3 a1 2 11 2012-12-12
4 a2 1 2 2012-12-12
5 a3 1 5 2012-12-12
----------------------------------------------
我想要的结果是:
---------------------------
name pih num maxtime
a1 1 10+100 2012-12-12
a1 2 11 2012-12-12
a2 1 2 2012-12-12
a3 1 5 2012-12-12
----------------------------------------
我自己写的如下:
select a.nnn,a.name,b.maxtime
FROM (select sum(num) as nnn ,name from table ) a,
INNER JOIN
table b
ON a.name = b.name
GROUP BY a.nnn,a.name,b.maxtime
-------------------------------------
得到的结果:
name pih num maxtime
a1 1 10+100+11 2012-12-12
a1 2 10+100+11 2012-12-12
a2 1 2 2012-12-12
a3 1 5 2012-12-12
很明显a1两个不同批号的,统计的数量不对
------解决方案--------------------
SELECT name, pih, SUM(pid) as num, maxtime FROM table GROUP BY pihao ,name