标记每组记录中的最小值

时间:2015-01-14 18:14:09

标签: ms-access

我无法在每组记录中标记最小值。我有一张像下面这样的表。

+-------+--------+----------+
|Prd ID | Price  | isLowest |
+---------------------------+
|00012  | 5      |          |
+---------------------------+
|00012  | 10     |          |
+---------------------------+
|00012  | 15     |          |
+---------------------------+
|00012  | 20     |          |
+---------------------------+
|00222  | 50     |          |
+---------------------------+
|00222  | 60     |          |
+---------------------------+
|00222  | 70     |          |
+---------------------------+

我希望在每个记录集的isLowest列中都有“是”。我的意思是一组记录,因为Prd ID是相同的,即00012和00222.我想要以下输出

+-------+--------+----------+
|Prd ID | Price  | isLowest |
+---------------------------+
|00012  | 5      |  Yes     |
+---------------------------+
|00012  | 10     |          |
+---------------------------+
|00012  | 15     |          |
+---------------------------+
|00012  | 20     |          |
+---------------------------+
|00222  | 50     |  Yes     |
+---------------------------+
|00222  | 60     |          |
+---------------------------+
|00222  | 70     |          |
+---------------------------+

我可以获得每组Prd ID的最小值,但是我不能在iswinner列中标记这个

要获得最小值,请使用以下查询。

SELECT tbl.prdid, Min(tbl.price) AS Price
FROM tbl
GROUP BY tbl.prdid

1 个答案:

答案 0 :(得分:1)

重新考虑您是否确实需要 isLowest 作为表格中的字段。无论何时需要查看,都可以通过查询轻松确定其值。

SELECT
    t.prdid,
    t.price,
    IIf(t.Price = sub.MinPrice, 'Yes', '') AS [isLowest]
FROM
    tbl AS t
    INNER JOIN
    (
        SELECT tbl.prdid, Min(tbl.price) AS MinPrice
        FROM tbl
        GROUP BY tbl.prdid
    ) AS sub
    ON t.prdid = sub.prdid;