我们的数据分类如下格式。第一列是我们的系统编号,第二列是后端系统编号,第三列表示具有ParentCol值的行实际上低于Col1的匹配行。 (因此,项目20有两个附加部分,第30项和第50项。)
Col1 Col2 ParentCol
10 100 NULL
20 200 NULL
30 201 20
40 300 NULL
50 202 20
10 400 NULL
...
这只是一个小例子 - 每个订单有时会有数百行。从查看UI中的数据的角度来看,应用程序不能很好地处理这种情况。理想情况下,我希望将内容排序为这样,我们的ID号(Col1)是主要的排序,但是当有一个ParentCol值与我们的ID匹配时,会认识到后端ID号(Col2)应该紧跟着:
Col1 Col2 ParentCol
10 100 NULL
10 400 NULL
20 200 NULL
30 201 20
50 202 20
40 300 NULL
使用T-SQL,如何根据需要编写返回数据的查询?由于我们的编号方案Col1中的各种编号方案和可能的有效重复值(但不是后端列Col2),我无法弄清楚这一点。
谢谢,
斯科特
答案 0 :(得分:2)
SELECT *
FROM @t
ORDER BY CASE WHEN ParentID IS NULL THEN col1 ELSE ParentID END, col2