标记每组记录中的最小值
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;
我卡在每组记录中标记最小值。我有一个 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;