按字母顺序排序
我有一个SQL表具有以下结构和值按字母顺序排序
AccountID | Company | ValuePath | ParentID
--------------------------------------------------
1 ZA 0/1 0
2 SS 1/2 1
3 BB 1/3 1
4 JJ 1/3/4 3
5 AB 1/3/5 3
6 ST 1/3/6 3
7 KK 1/7 1
8 ZZ 1/3/4/8 4
9 AA 1/3/4/9 4
10 CC 1/3/4/10 4
11 AA 0/1 0
------------------------------------------------------
的valuepath正在使用在asp.net一个TreeView。正如你所看到的,父子关系存在于同一个表中。但是面临的问题是每个树视图节点下的排序。当我绑定这个时,显然树形视图上没有排序。但是我需要在绑定之前按字母顺序排列这张表。
所以导致平板电脑应该是这样的
AccountID | Company | ValuePath | ParentID
--------------------------------------------------
11 AA 0/1 0
1 ZA 0/1 0
3 BB 1/3 1
5 AB 1/3/5 3
4 JJ 1/3/4 3
9 AA 1/3/4/9 4
10 CC 1/3/4/10 4
8 ZZ 1/3/4/8 4
6 ST 1/3/6 3
7 KK 1/7 1
2 SS 1/2 1
------------------------------------------------------
希望的结果表就清楚了。这意味着父母之间的每个节点都将按字母顺序排序。在每个节点之后,如果有任何子节点,它将在列出该节点之前列出其兄弟节点。并且子节点也将按字母顺序排序。 更新 作为一个例子accountIDs 8 & 10和9也在parentAccount 4下。因此,当采取这三个在帐户4下并根据公司名字母排序它们时,顺序将如结果表中那样这是AA,CC,ZZ希望你得到它
这是CTE,它假定有一个种子节点时工作。 它应该在你的情况下有两个种子节点,其中一个没有任何子节点。
WITH CTEEX(Company, Accountid, ValuePath ,parentid, Sort)
AS (SELECT Company,Accountid,ValuePath , parentid,Company as Sort FROM Table_1
WHERE parentId =0
UNION ALL
SELECT a.Company,a.Accountid,a.ValuePath ,a.parentid,CONVERT (nvarchar(2000), RTRIM(Sort) + '| '+ a.Company)
FROM Table_1 a JOIN CTEEX b on a.parentId=b.Accountid
)
SELECT Accountid,Company, ValuePath ,parentid
FROM CTEEX
ORDER BY Sort
如果可以帮助您,请将其标记为答案。 – DhruvJoshi
其触发错误 “类型在递归查询”CTEEX“的”排序“列中的锚和递归部分之间不匹配。 对不起,我不是SQL专家。因此,请求您的支持 –
使用此表 – DhruvJoshi
两者accountIDs 8 10和9也根据parentAccount 4.因此,采取这三种这是帐户4下并基于该公司名称的字母顺序对它们进行排序的情况下,为了将在结果表,该表是AA,CC,ZZ 希望你明白了。 –
可能更适合将您的评论添加到问题 – Tanner