我试图以这样一种方式编写SQL Server 2008查询,以便可以根据需要循环遍历输出和输出标头。我已经多次以错误的方式完成了这些工作,并让ColdFusion在页面中进行了艰苦的工作,但是需要在SQL Server中完成。
FeatureID ParentID Feature -------------------------- 1 0 Apple 2 0 Boy 3 2 Charles 4 1 Daddy 5 2 Envelope 6 1 Frankfurter
我希望查询结果集如下所示:
FeatureID ParentID Feature -------------------------- 1 0 Apple 4 1 Daddy 6 1 Frankfurter 2 0 Boy 3 2 Charles 5 2 Envelope
如果ParentID为0,则表示它是主要类别。如果ParentID大于0,则表示它是次要类别,是父级的子级。
因此,父母需要订购A-Z,而孩子则需要订购AZ。
您能帮我正确订购吗?
SELECT FeatureID, ParentID, Feature FROM Features ORDER BY
根据您的评论,如果您知道只有两个级别,那么有一个简单的解决方案:
select * from @Features feat order by case when ParentID = 0 then Feature else ( select Feature from @Features parent where parent.FeatureID = feat.ParentID ) end , case when ParentID = 0 then 1 end desc , Feature
SE Data的示例。