在SQL中获取选定的最小价格行列?

时间:2014-07-13 07:07:13

标签: sql sql-server tsql sql-server-2012

我有以下查询,

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

1 个答案:

答案 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

An SQLfiddle to test with