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就可以做到这一点。