Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql MS ACCESS:无法检索基于最长日期支付的上次价格_Sql_Ms Access - Fatal编程技术网

Sql MS ACCESS:无法检索基于最长日期支付的上次价格

Sql MS ACCESS:无法检索基于最长日期支付的上次价格,sql,ms-access,Sql,Ms Access,目标 SELECT [Sales Order Details (F42119)].SDAN8 AS [COMPANY ID], [Sales Order Details (F42119)].SDITM AS [ITEM ID], [Sales Order Details (F42119)].SDAITM AS STYLE, (CCur([SDLPRC])/10000) AS PRICE, Max([Sales Order Details (F42119)].SDDRQJ) AS [LA

目标

SELECT 
[Sales Order Details (F42119)].SDAN8 AS [COMPANY ID], 
[Sales Order Details (F42119)].SDITM AS [ITEM ID], 
[Sales Order Details (F42119)].SDAITM AS STYLE, 
(CCur([SDLPRC])/10000) AS PRICE, 
Max([Sales Order Details (F42119)].SDDRQJ) AS [LAST SHIP DATE] 

INTO [Table - Sales Details]
FROM [Sales Order Details (F42119)]

GROUP BY 
[Sales Order Details (F42119)].SDAN8, 
[Sales Order Details (F42119)].SDITM, 
[Sales Order Details (F42119)].SDAITM, 
(CCur([SDLPRC])/10000);
根据
项目ID
和最新支付的
价格
公司ID
制定销售目录(基于
上次发货日期

方法

  • 拉入
    客户
    销售
    项目
    表格
  • 根据
    客户ID
    项目
    运行查询链接表,以了解采购历史记录
  • 导出显示
    公司ID
    项目ID
    上次销售价格
    上次发货日期的表格
  • 代码

    SELECT 
    [Sales Order Details (F42119)].SDAN8 AS [COMPANY ID], 
    [Sales Order Details (F42119)].SDITM AS [ITEM ID], 
    [Sales Order Details (F42119)].SDAITM AS STYLE, 
    (CCur([SDLPRC])/10000) AS PRICE, 
    Max([Sales Order Details (F42119)].SDDRQJ) AS [LAST SHIP DATE] 
    
    INTO [Table - Sales Details]
    FROM [Sales Order Details (F42119)]
    
    GROUP BY 
    [Sales Order Details (F42119)].SDAN8, 
    [Sales Order Details (F42119)].SDITM, 
    [Sales Order Details (F42119)].SDAITM, 
    (CCur([SDLPRC])/10000);
    
    问题/问题

  • 客户
    A购买的
    商品
    ABC@3个不同日期的3种不同价格。我取了
    发货日期
    Max
    ,希望显示上次的
    价格
    已支付的(导致价格只有一个值)。然而,由于某种原因,我仍然在三个不同的日期收到三种不同的价格如何让MS Access仅显示基于最新发货日期的最新价格?

  • 注:SDLPRC=“售价”。我必须将SLDPRC转换成一种货币,然后除以1000;这是由于我们当前的数据库设置。另外,
    SDAITM
    是一个更方便客户使用的“缩写项目编号”。

    问题在于您正在按价格变量
    (CCur([SDLPRC])/10000)进行分组。使用
    groupby
    时,Access/SQL将按
    groupby
    语句中的所有变量拆分行。所以你不需要按价格分组

    将查询更改为使用子查询,该子查询可查找按
    [Company ID]
    [Item ID]
    样式
    分组的销售的最后日期。用户可以使用外部查询获取该特定记录的价格。比如:

    SELECT b.[COMPANY ID], b.[ITEM ID], b.STYLE, b.[LAST SHIP DATE], CCur(a.[SDLPRC])/10000 as PRICE
    INTO [Table - Sales Details]
    FROM [Sales Order Details (F42119)] as a
    INNER JOIN
        (SELECT 
            [Sales Order Details (F42119)].SDAN8 AS [COMPANY ID], 
            [Sales Order Details (F42119)].SDITM AS [ITEM ID], 
            [Sales Order Details (F42119)].SDAITM AS STYLE, 
            Max([Sales Order Details (F42119)].SDDRQJ) AS [LAST SHIP DATE] 
        FROM [Sales Order Details (F42119)]
        GROUP BY 
            [Sales Order Details (F42119)].SDAN8,
            [Sales Order Details (F42119)].SDITM, 
            [Sales Order Details (F42119)].SDAITM 
        ) as b
    ON a.SDAN8 = b.[COMPANY ID]
       and a.SDITM = b.[ITEM ID]
       and a.SDAITM = b.STYLE
       and a.SDDRQJ = b.[LAST SHIP DATE] 
    

    谢谢,这证实了我的怀疑