标记每组记录中的最小值

Flag the minimum value in each set of records

我卡在每组记录中标记最小值。我有一个 table 结构如下。

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

我想在每组记录的 isLowest 列中包含 "Yes"。我的意思是记录集,因为 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

重新考虑您是否真的需要 isLowest 作为 table 中的字段。您可以在需要查看时通过查询轻松确定其值。

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;