Office中国论坛/Access中国论坛

标题: 如何在这个查询中,只统计其中A1和A2的数量,或者A开头和B开头的分别统计? [打印本页]

作者: hshzhq    时间: 2016-1-9 16:53
标题: 如何在这个查询中,只统计其中A1和A2的数量,或者A开头和B开头的分别统计?
如图,第一幅图是结果,内衣数本来是要统计A1和A2的值,而B1、B2、B3是内裤,我本来想分别统计的,请问怎么修改才可以使这里的内衣数只是统计A1和A2的值,我看了大部分都是必须统计的是全部的值。
TRANSFORM SUM(数量) AS S_NY
SELECT 销售编号,SUM(数量) AS 内衣数
FROM 子表
GROUP BY 销售编号
PIVOT 子表.[商品型号];



作者: hshzhq    时间: 2016-1-9 16:54
附件是我的表,可以查看里面的情况
作者: 先下车选4    时间: 2016-1-10 04:14
bugou 不够等级下
作者: 先下车选4    时间: 2016-1-10 04:25
不够等级下
作者: 先下车选4    时间: 2016-1-10 04:36
你子表是什么样子的呢
作者: roych    时间: 2016-1-10 09:19
看看这样行不行:
[attach]57821[/attach]
用IIF来设计列字段,如果类别较多,则建议使用基础表或者编写自定义函数。
详见附件:
[attach]57822[/attach]
作者: 先下车选4    时间: 2016-1-10 20:13
  1. 销售编号        内衣数        内B数        A1        A2        B1        B2        B4
  2. 160101001        18        3        15        3        2        1       
  3. 160101002        3        4        1        2        1        3       
  4. 160102001        7        1        5        2                        1
复制代码



  1. TRANSFORM SUM(数量) AS S_NY
  2. SELECT 销售编号, SUM(iif(商品型号 like "A*",数量,0)) AS 内衣数,SUM(iif(商品型号 like "B*",数量,0)) AS 内B数
  3. FROM 子表
  4. GROUP BY 销售编号
  5. PIVOT 子表.[商品型号];
复制代码


作者: hshzhq    时间: 2016-1-11 08:49
先下车选4 发表于 2016-1-10 20:13

谢谢,测试成功。我不知道sum还可以里面使用语句的,也算是学艺不精啊。
作者: hshzhq    时间: 2016-1-11 08:52
roych 发表于 2016-1-10 09:19
看看这样行不行:

用IIF来设计列字段,如果类别较多,则建议使用基础表或者编写自定义函数。

不行,完全没有统计列了,而且我之后希望数据能更新到主表里面,如果对应不上主表的主键就没办法进行,谢谢回复,楼下的回复的很好,粘贴进SQL里面效果正好达到我的需要
作者: hshzhq    时间: 2016-1-11 09:38
本帖最后由 hshzhq 于 2016-1-11 14:21 编辑

我查看了下修改了,使用“先下车选4"朋友的只能计算有规律的字段的结果,如果使用In,就可以查询多条件字段的结果,例如我这里的字段如果是不相关的字,那么就不能使用”A*“,而使用in,就可以指定A1、A2、A3.....,也可以是任何名词。见下面代码。
-------------------------------------------------------------------------------------------------------------------------------------------
  1. TRANSFORM SUM(数量) AS S_NY
  2. SELECT 销售编号, SUM(iif(商品型号 like "A*",数量,0)) AS 内衣数, SUM(iif(商品型号 like "B*",数量,0)) AS 内裤数
  3. FROM 子表
  4. GROUP BY 销售编号
  5. PIVOT 子表.[商品型号];
复制代码

-----------------------------------------------------------------------------------------------------------------------------------------
  1. TRANSFORM SUM(数量) AS S_NY
  2. SELECT 销售编号, SUM(iif(商品型号 in ("A1","A2","A3"),数量,0)) AS 内衣数, SUM(iif(商品型号 in ("B1","B2","B4"),数量,0)) AS 内裤数
  3. FROM 子表
  4. GROUP BY 销售编号
  5. PIVOT 子表.[商品型号];
复制代码






欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3