Sql server 显示组上面的详细信息查询

Sql server 显示组上面的详细信息查询,sql-server,Sql Server,表中的数据: ItemCode ItemName ItemGroup SFD Softdrink NULL CCL Coco Cola SFD FNT Fanta SFD SPR Sprite SFD ACL Alchol TQL Tequila ACL VDK

表中的数据:

    ItemCode  ItemName     ItemGroup  
    SFD       Softdrink     NULL
    CCL       Coco Cola     SFD
    FNT       Fanta         SFD
    SPR       Sprite        SFD
    ACL       Alchol            
    TQL       Tequila       ACL
    VDK       Vodka         ACL
当用户找到软饮料时,结果将是:

    ItemCode       ItemName
    SFD            Softdrink     
    CCL            Coca Cola         
    FNT            Fanta                       
    SPR            Sprite               
我怎么做呢


谢谢。

所有软饮料都在项目组sfd中。尝试从itemgroup='SFD'的表中选择itemcode、itemname

马克·汉密尔顿指出:


除了软饮料本身没有SFD作为其项目组。您需要向查询中添加或ItemCode='SFD'。我想知道这些类别是否可以嵌套得更远,在这种情况下,递归CTE就可以做到这一点

是的,要么在where中添加'or',要么进行递归。

处理好了吗

select ItemCode, ItemName from Items 
where itemCode in (select itemcode  from Items where itemname = 'softDrink') 
or itemGroup in  (select itemcode  from Items where itemname = 'softDrink')
这是否可以进一步修改

WITH hier (code, name) AS
        (
        SELECT  ItemCode, ItemName
        FROM    Table
        WHERE   ItemCode = 'SFD'
        UNION ALL
        SELECT  ItemCode, ItemName
        FROM    hier
        JOIN    Table
        ON      ItemGroup = code
        )
SELECT  *
FROM    hier

这将选择具有更深层次的项目。E您可以使用ItemGroup=FNT添加Fanta Lemon和Fanta Orange,此查询也将选择它们。

除了软饮料本身没有SFD作为其ItemGroup之外。您需要向查询中添加或ItemCode='SFD'。我想知道这些类别是否可以嵌套得更远,在这种情况下,递归CTE就可以做到这一点。