2016-08-15 4 views
-1

親子構造にテーブルを配置する必要があります。SQL Serverで親子形式でテーブルデータを整列する方法

このテーブルをクエリするにはどうすればよいですか?

txnno Name  type isHeadr headr 
------------------------------------------ 
1000 BEFORE  JO  Y 
1001 WHILE  JO  Y 
1002 data aaa JO  N  1000 
1003 bbbbdfds JO  N  1000 
1004 ccccccc  JO  N  1000 
1012 aaa111  JO  N  1001 
1015 bbb222  JO  N  1001 
1016 ccc333  JO  N  1001 

私のSQL Serverでこの結果を得るために:

txnno Name  type isHeadr headr 
----------------------------------------- 
1000 BEFORE  JO  Y  
1002 data aaa JO  N  1000 
1003 bbbbdfds JO  N  1000 
1004 ccccccc  JO  N  1000 
1001 WHILE  JO  Y 
1012 aaa111  JO  N  1001 
1015 bbb222  JO  N  1001 
1016 ccc333  JO  N  1001 
+0

このリンクをクリックして質問を改善してください。https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar

答えて

3
SELECT * 
FROM YourTable 
ORDER BY ISNULL(headr,txnno) ASC, isHeadr DESC, txnno 

出力:

txnno Name  type isHeadr headr 
1000 BEFORE  JO  Y  NULL 
1002 data aaa JO  N  1000 
1003 bbbbdfds JO  N  1000 
1004 ccccccc  JO  N  1000 
1001 WHILE  JO  Y  NULL 
1012 aaa111  JO  N  1001 
1015 bbb222  JO  N  1001 
1016 ccc333  JO  N  1001 

をあなたは0の代わりNULL使用NULLIFを持っている場合

+1

両親が子どもよりも低い「txnno」値を持つことを前提としています。これは、OPのサンプルデータが表示されているように見えますが、確かではありません。 –

+0

@Damien_The_Unbelieverこの状況を処理するために '、isHeadr DESC'を追加してください。 – gofr1

関連する問題