我有以下查询,
SELECT * FROM Products P
OUTER APPLY
(
SELECT COALESCE(CP.NewPrice, CP.Price, 2147483647) AS MinimumChildPrice
--,SelectedMinimumPriceRow.Promotion
FROM Products CP
WHERE CP.ParentID = P.ID
) AS C
问题是SelectedMinimumPriceRow.Promotion
。我需要选择此最低价格/新价格的额外促销栏吗?
例如,如果我有,
ID ParentID Promotion Price NewPrice
----------------------------------------
1 NULL a 81 52
2 1 b 11 81
3 1 c 91 14
4 1 d 11 25
5 1 e 10 61
对于ID=1
,最低价格为14.因此,我也需要选择c
。
答案 0 :(得分:2)
你可以简单地用价格排序的TOP 1查询替换你的OUTER APPLY查询,这样你就可以抓住任何一列;
SELECT * FROM Products P
OUTER APPLY
(
SELECT TOP 1 COALESCE(CP.NewPrice, CP.Price, 2147483647) MinimumChildPrice,
promotion MinimumChildPricePromotion
FROM Products CP
WHERE CP.ParentID = P.ID
ORDER BY COALESCE(CP.NewPrice, CP.Price, 2147483647)
) AS C