我无法在每组记录中标记最小值。我有一张像下面这样的表。
+-------+--------+----------+
|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
答案 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;