Access交流中心

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

如何在一个表中进行多条件汇总查询

刘清炫  发表于:2018-02-12 07:07:10  
复制

查询规格=63,>63,<63的金额的合计如何查询,在一个查询中汇总显示
金额之合计 规格 材料名称
1111 20 管材
12210 200 管材
5540 25 管材
1189650 32 管材
114440 40 管材
22776 63 管材
以下是需要达到的效果

项目 等于63 大于63 小于63
金额合计

 

Top
MDZZ 发表于:2018-02-12 12:41:15
写条件  用 or 连接

半夜罗 发表于:2018-02-16 14:01:05

你想要的是这个形式的吧,有两种方法,一种是追加查询,一种是联合查询后再选择查询。我将你原来的数据命名为“表1”,做了一个代码:

SELECT Sum(a.规格小于63的金额) AS 规格小于63的金额之总计, Sum(a.规格等于63的金额) AS 规格等于63的金额之总计, Sum(a.规格大于63的金额) AS 规格大于63的金额之总计, a.材料名称
FROM [SELECT Null AS 规格小于63的金额, [表1]![金额之合计] AS 规格等于63的金额, Null AS 规格大于63的金额, 表1.材料名称
FROM 表1
WHERE (((Val([表1]![规格]))=63))
GROUP BY Null, [表1]![金额之合计], Null, 表1.材料名称
union
SELECT [表1]![金额之合计] AS 规格小于63的金额, Null AS 规格等于63的金额, Null AS 规格大于63的金额, 表1.材料名称
FROM 表1
WHERE (((Val([表1]![规格]))<63))
GROUP BY [表1]![金额之合计], Null, Null, 表1.材料名称
UNION SELECT Null AS 规格小于63的金额, Null AS 规格等于63的金额, [表1]![金额之合计] AS 规格大于63的金额, 表1.材料名称
FROM 表1
WHERE (((Val([表1]![规格]))>63))
GROUP BY Null, Null, [表1]![金额之合计], 表1.材料名称, Val(表1!规格)]. AS a
GROUP BY a.材料名称



半夜罗 发表于:2018-02-16 14:05:38
但我对于这类问题,一般不用联合查询的方法,因为一旦有问题,检查起来太麻烦。用临时表设置好字段后追加,这样有问题相当容易修改。

半夜罗 发表于:2018-02-16 14:05:40
但我对于这类问题,一般不用联合查询的方法,因为一旦有问题,检查起来太麻烦。用临时表设置好字段后追加,这样有问题相当容易修改。

半夜罗 发表于:2018-02-16 14:28:59

还有一种方法:先建立一个联合查询

SELECT Sum(表1.金额之合计) AS 金额, "小于63" AS 规格
FROM 表1
WHERE Val([表1]![规格])<63
GROUP BY "小于63"
union
SELECT 表1.金额之合计 AS 金额, "等于63" AS 规格
FROM 表1
WHERE Val([表1]![规格])=63
UNION SELECT Sum(表1.金额之合计) AS 金额, "大于63" AS 规格
FROM 表1
WHERE Val([表1]![规格])>63
GROUP BY "大于63"

得出这样的查询

这个查询实际上已经得出了结果。

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