【问题标题】:The MIN() Function Ms AccessMIN() 函数女士访问
【发布时间】:2014-07-21 09:45:52
【问题描述】:

这是我创建的 ms 访问查询的示例 sql 查询。我试图只获得一排最小(日期)。当我运行我的查询时,我得到了多行。任何命中?谢谢

SELECT tblWarehouseItem.whiItemName,
       tblWarehouseItem.whiQty, 
       tblWarehouseItem.whiPrice, 
       Min(tblWarehouseItem.whiDateIn) AS MinOfwhiDateIn, 
       tblWarehouseItem.whiExpiryDate, 
       tblWarehouseItem.whiwrhID
FROM tblWarehouseItem
GROUP BY tblWarehouseItem.whiDateIn,
         tblWarehouseItem.whiItemName,
         tblWarehouseItem.whiQty,
         tblWarehouseItem.whiPrice,
         tblWarehouseItem.whiExpiryDate,
         tblWarehouseItem.whiwrhID;

如果我的 sql 代码可以正常工作:

SELECT MIN(tblWarehouseItem.whiDateIn) FROM tblWarehouseItem;

【问题讨论】:

    标签: sql ms-access vba ms-access-2007 aggregate-functions


    【解决方案1】:

    在第一个查询中,您按列数进行分组。这意味着将为每个组计算最小值,这反过来意味着您可能有多行。另一方面,第二个查询只会从所有行中获取指定列的最小值,因此结果集中只有一行。

    下面是一个简单的例子来说明上面的内容。

    Table:
    Key Value
    1  1
    1  2
    2  3
    2  4
    

    开启Group By Key

    GroupKey MinValue
    1        = min(1,2) = 1 -> Row 1
    2        = min(3,4) = 3 -> Row 2
    

    开启Min (Value)

    MinValue
    =min(1,2,3,4) = 1 -> Row 1
    

    对于像上面这样的表格,如果您想选择所有行并显示整个表格而不是每个组的最小值,您可以执行以下操作:

    select key, (select min(value) from table)
    from table
    

    【讨论】:

    • 如何重写我的 sql 以输出该表的最小值但保留所有字段?
    【解决方案2】:
    SELECT WI.*
    FROM tblWarehouseItem AS WI INNER JOIN (SELECT whiimtID, MIN(tblWarehouseItem.whiDateIn) AS whiDateIn
              FROM tblWarehouseItem
            GROUP BY whiimtID)  AS MinWI ON (WI.whiDateIn = MinWI.whiDateIn) AND (WI.whiimtID = MinWI.whiimtID);
    

    【讨论】:

      猜你喜欢
      • 2013-01-02
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多