Access交流中心

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

求解dsum用于交叉查询报错

zen  发表于:2014-10-29 22:35:14  
复制

数据表:物料编码(文本),物料描述(文本),建议到期日(日期),数量(数字),订单类型,组织,

当物料编码超过一种时,报错

TRANSFORM DSum("NZ([数量])","数据表","[物料编码] = '" & [物料编码] & "'and [建议到期日]<= #" & [建议到期日] & "#") AS 需求
SELECT 数据表.物料编码, 数据表.物料描述, Min(IIf(DSum("NZ([数量])","数据表","[物料编码] = '" & [物料编码] & "'and [建议到期日]<= #" & [建议到期日] & "#")<0,[建议到期日])-1) AS 用到日期
FROM 数据表
GROUP BY 数据表.物料编码, 数据表.物料描述
ORDER BY 数据表.物料编码, 数据表.建议到期日
PIVOT 数据表.建议到期日;

 

Top
竹笛 发表于:2014-10-30 12:54:31
上传一下你的示例文件,有助于快速获得解答。

zen 发表于:2014-10-31 18:01:08

求解DUSM在交叉查询的用法

数据表:物料编码(文本),物料描述(文本),建议到期日(日期),数量(数字),订单类型,组织,

当物料编码超过一种时,报错

TRANSFORM DSum("NZ([数量])","数据表","[物料编码] = '" & [物料编码] & "'and [建议到期日]<= #" & [建议到期日] & "#") AS 需求
SELECT 数据表.物料编码, 数据表.物料描述, Min(IIf(DSum("NZ([数量])","数据表","[物料编码] = '" & [物料编码] & "'and [建议到期日]<= #" & [建议到期日] & "#")<0,[建议到期日])-1) AS 用到日期
FROM 数据表
GROUP BY 数据表.物料编码, 数据表.物料描述
ORDER BY 数据表.物料编码, 数据表.建议到期日
PIVOT 数据表.建议到期日;

 



朱先生 发表于:2014-10-31 21:35:13

"[物料编码] = '" & [物料编码] & "'and "[建议到期日]<=" #" & [建议到期日] & "#") 

试试



zen 发表于:2014-11-01 08:43:13

按朱先生的试



renco 发表于:2014-11-02 00:35:32
And 前面加个空格

朱先生 发表于:2014-11-02 08:10:23
accdb格式帮者寡

西出阳关无故人 发表于:2014-11-04 10:07:01
TRANSFORM Sum(DSum("NZ([数量])","数据表","[物料编码] = '" & [数据表].[物料编码] & "'and [建议到期日]<= #" & [数据表].[建议到期日] & "#")) AS 需求
SELECT 数据表.物料编码, 数据表.物料描述, 用到日期.表达式1 AS 用到日期
FROM 数据表 LEFT JOIN (SELECT [%$##@_Alias].物料编码, Min([%$##@_Alias].用到日期) AS 表达式1
FROM (SELECT 数据表.物料编码, 数据表.建议到期日, IIf(DSum("数量","数据表","物料编码='" & [物料编码] & "' and 建议到期日<=#" & [建议到期日] & "#")<0,[建议到期日]-1) AS 用到日期
FROM 数据表)  AS [%$##@_Alias]
GROUP BY [%$##@_Alias].物料编码) as 用到日期 ON 数据表.物料编码 = 用到日期.物料编码
GROUP BY 数据表.物料编码, 数据表.物料描述, 用到日期.表达式1
PIVOT 数据表.建议到期日

西出阳关无故人 发表于:2014-11-04 10:11:21


西出阳关无故人 发表于:2014-11-04 10:56:26

功能可以实现(如上),但不建议在长时间跨度的数据中这样处理,因为交叉表的列数是有限的,且太宽的表不利于查看!



zen 发表于:2014-11-07 21:41:40

感谢:西出阳关无故人,

多问个:什么环境下要用[%$##@_Alias],这是为什么?还有DSUM()貌似不好处理N多数据。



西出阳关无故人 发表于:2014-11-10 08:45:35

什么环境下要用[%$##@_Alias]?

在你没有对子查询进行命名的情况下,acc自动添加的子查询的名称.你可以进行有意义的命名,方便理解即可,例如:

select 子查询.字段1 from (select 字段1,字段2 from 表1) as 子查询



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