Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 如何格式化父子记录的结果集?_.net_Sql Server_Ado.net_Sorting - Fatal编程技术网

.net 如何格式化父子记录的结果集?

.net 如何格式化父子记录的结果集?,.net,sql-server,ado.net,sorting,.net,Sql Server,Ado.net,Sorting,全部, 我有一个来自几个SQL Server表的结果集,我需要知道获取所需排序记录的最佳方法是什么 我有以下记录;将用户名和模块号作为父记录,然后每个模块都有多个子模块子记录。我遇到的问题是模块记录与每个子模块记录都有关联。因此,我从存储过程中获得以下记录: NAME Module Sub-module Derek Kenney 1 1 Derek Kenney 1 2 Derek Kenney 1 3 Derek K

全部,

我有一个来自几个SQL Server表的结果集,我需要知道获取所需排序记录的最佳方法是什么

我有以下记录;将用户名和模块号作为父记录,然后每个模块都有多个子模块子记录。我遇到的问题是模块记录与每个子模块记录都有关联。因此,我从存储过程中获得以下记录:

NAME            Module  Sub-module
Derek Kenney    1       1
Derek Kenney    1       2
Derek Kenney    1       3
Derek Kenney    1       4
Derek Kenney    1       5
我想要的是:

NAME            Module  Sub-module
Derek Kenney    1       1
                        2
                        3
                        4
                        5
我想我的问题是在我发布在下面的大讨论中



也许ADO.NET中有一种方法可以获得我想要的结果集,但我并不知道。任何帮助都将不胜感激


德里克·肯尼(Derek Kenney)

试试这样:

DECLARE @YourData table (YourName varchar(20), Module char(1), SubModule char(1))

INSERT INTO @YourData VALUES ('Derek Kenney',1,1)
INSERT INTO @YourData VALUES ('Derek Kenney',1,2)
INSERT INTO @YourData VALUES ('Derek Kenney',1,3)
INSERT INTO @YourData VALUES ('Derek Kenney',1,4)
INSERT INTO @YourData VALUES ('Derek Kenney',1,5)
INSERT INTO @YourData VALUES ('Derek Kenney',2,1)
INSERT INTO @YourData VALUES ('Derek Kenney',2,2)
INSERT INTO @YourData VALUES ('Derek Kenney',2,3)
INSERT INTO @YourData VALUES ('Joe Smith'   ,1,1)
INSERT INTO @YourData VALUES ('Joe Smith'   ,2,1)
INSERT INTO @YourData VALUES ('Joe Smith'   ,2,2)


SELECT
    CASE WHEN NameRank=1 /*OR NameModuleRank=1*/ THEN YourName ELSE '' END AS YourName
        ,CASE NameModuleRank WHEN 1 THEN Module ELSE '' END AS Module
        ,SubModule
    FROM (SELECT
              YourName,Module,SubModule
                  ,ROW_NUMBER() OVER(partition by YourName ORDER BY YourName) AS NameRank
                  ,ROW_NUMBER() OVER(partition by YourName,Module ORDER BY YourName,Module) AS NameModuleRank
              FROM @YourData
         ) dt
输出:

YourName             Module SubModule
-------------------- ------ ---------
Derek Kenney         1      1
                            2
                            3
                            4
                            5
                     2      1
                            2
                            3
Joe Smith            1      1
                     2      1
                            2

(11 row(s) affected)

如果需要,您可以取消对或的注释,以便在模块更改时显示您的姓名

非常感谢。我要试试这个。非常感谢。如果我的答案适合你,你可以点击我答案旁边的复选标记“接受”它。
YourName             Module SubModule
-------------------- ------ ---------
Derek Kenney         1      1
                            2
                            3
                            4
                            5
                     2      1
                            2
                            3
Joe Smith            1      1
                     2      1
                            2

(11 row(s) affected)