Access交流中心

北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |

请问一个关于查询分组的问题

nox  发表于:2009-04-22 00:27:35  
复制

请问一个关于查询分组的问题!

这个是小弟自动算结存的查询结果
序号   名称   规格   数量期初   金额期初   数量收入   金额收入   数量付出   金额付出   数量期末   金额期末
1       白泥    1*1     20                       200          0              0                 0                0              20              200
2       白泥    2*2     20                       200          20            200            0                0              40              400
3       白泥    1*1     40                       400          0              0                 5                50            35             350        

想达到的效果
序号   名称   规格   数量期初   金额期初   数量收入   金额收入   数量付出   金额付出   数量期末   金额期末
1       白泥    1*1     20                      200          0              0                 0                      0           20             200
2       白泥    1*1     20                      200          0              0                 5                      50         15             150
3       白泥    2*2     0                         0             20            200             0                      0           20             200

其实就是想要这个查询如何让同一名称不同规格的产品不要混在一起而是分开自动算结存.
就拿我上传的这个列子来说,我想让名称是白泥而规格是1*1的的两条记录和名称是白泥规格是2*2的那条分开算结存
就是想让同一名称但不同规格的分组来算结存.
请问基于我这个查询要如何实现这个功能呢?
下面是我的这个查询的SQL


SELECT (select count(*) from 基础查询 as b where b.名称ID=a.名称ID and b.日期<=a.日期) AS 序号, a.类型, a.名称ID, a.名称, a.规格, a.计量单位, a.日期, a.凭证号数, a.摘要, a.单价, 数量期末+数量付出-数量收入 AS 数量期初, 金额期末+金额付出-金额收入 AS 金额期初, a.数量收入, a.金额收入, a.数量付出, a.金额付出, (select sum(b.数量期初+b.数量收入-b.数量付出) from 基础查询 as b where b.名称ID=a.名称ID and b.日期<=a.日期) AS 数量期末, (select sum(b.金额期初+b.金额收入-b.金额付出) from 基础查询 as b where b.名称ID=a.名称ID and b.日期<=a.日期) AS 金额期末
FROM 基础查询 AS a;
 
我的列子

 
点击下载此附件

 

Top
星之语 发表于:2009-04-22 09:23:20

是不是你要的?

在原有语句后面加上:ORDER BY a.名称, a.规格, a.日期;

 

 

SELECT (select count(*) from 基础查询 as b where b.名称ID=a.名称ID and b.日期<=a.日期) AS 序号, a.类型, a.名称ID, a.名称, a.规格, a.计量单位, a.日期, a.凭证号数, a.摘要, a.单价, 数量期末+数量付出-数量收入 AS 数量期初, 金额期末+金额付出-金额收入 AS 金额期初, a.数量收入, a.金额收入, a.数量付出, a.金额付出, (select sum(b.数量期初+b.数量收入-b.数量付出) from 基础查询 as b where b.名称ID=a.名称ID and b.日期<=a.日期) AS 数量期末, (select sum(b.金额期初+b.金额收入-b.金额付出) from 基础查询 as b where b.名称ID=a.名称ID and b.日期<=a.日期) AS 金额期末
FROM 基础查询 AS a
ORDER BY a.名称, a.规格, a.日期;



nox 发表于:2009-04-22 14:04:12

谢谢lsdongjh,但还是不对.我要的是同一名称不同规格的分开算结存,而不是混在一起算结存!



蒋元根 发表于:2009-04-23 10:18:50

给你修改了一下,供参考,另外建议增加一产品表,产品ID同一名称不同规格产品的分开编号.

点击下载此附件

总记录:3篇  页次:1/1 9 1 :