1

问题

我导入了一个电子表格,其中包含与子项位于同一列的父组数据。我想为组添加提取列,如下所示。

创建表

DECLARE @Fruit TABLE
    (
      ProductID INT IDENTITY(1, 1)
                    PRIMARY KEY ,
      FruitName NVARCHAR(20) ,
      FruitCost MONEY
    )

INSERT  INTO @fruit
        ( FruitName, FruitCost )
VALUES  ( 'Berry', NULL )
INSERT  INTO @fruit
        ( FruitName, FruitCost )
VALUES  ( 'BlueBerry', 2 )
INSERT  INTO @fruit
        ( FruitName, FruitCost )
VALUES  ( 'StrawBerry', 2 )
INSERT  INTO @fruit
        ( FruitName, FruitCost )
VALUES  ( 'Citrus', NULL )
INSERT  INTO @fruit
        ( FruitName, FruitCost )
VALUES  ( 'Lemon', 2 )
INSERT  INTO @fruit
        ( FruitName, FruitCost )
VALUES  ( 'Orange', 2 )

SELECT  *
FROM    @Fruit

表结果

ProductID   FruitName            FruitCost
----------- -------------------- ---------------------
1           Berry                NULL
2           BlueBerry            2.00
3           StrawBerry           2.00
4           Citrus               NULL
5           Lemon                2.00
6           Orange               2.00

所需结果

FruitName            FruitCost             FruitGroup
-------------------- --------------------- --------------------
BlueBerry            2.00                  Berry
StrawBerry           2.00                  Berry
Lemon                2.00                  Citrus
Orange               2.00                  Citrus
4

2 回答 2

2

试试这个

select
    f3.FruitName, f3.FruitCost, f.FruitName
from
    @Fruit f
        inner join
    (
        SELECT  *,
        (Select max(productid) from @Fruit f2 where FruitCost is null and ProductID<=f.ProductID) as fgroup
        FROM    @Fruit f
    ) f3
        on f.ProductID = f3.fgroup
where f3.FruitCost is not null  
于 2012-08-15T11:41:14.650 回答
1
select t.FruitName,t.FruitCost,  
(select FruitName from @fruit t2
  where t2.ProductId in 
  (
    select max(t3.ProductId) from 
    @fruit t3 
    where (t3.FruitCost is null) and (t3.ProductId<t.ProductId)
   )

) FruitGroup
from @Fruit t where (t.FruitCost is not null)
于 2012-08-15T11:56:39.343 回答