Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Sql server 2008 SQL选择所需格式的语句_Sql Server 2008 - Fatal编程技术网

Sql server 2008 SQL选择所需格式的语句

Sql server 2008 SQL选择所需格式的语句,sql-server-2008,Sql Server 2008,我有一个名为comment的表 proj_id cmnt_seq_no cmnt_tx 20 1 20_Data1 20 2 20_Data2 20 3 20_Data3 20 4 20_Data4 20 5 20_Data5 20 6 20_Data6

我有一个名为comment的表

   proj_id  cmnt_seq_no cmnt_tx
    20              1   20_Data1
    20              2   20_Data2
    20              3   20_Data3
    20              4   20_Data4
    20              5   20_Data5
    20              6   20_Data6
    20              7   20_Data7
    21              1   21_Data1
    21              2   21_Data2  
    21              3   21_Data3
    21              4   21_Data4
    21              5   21_Data5
    21              6   21_Data6
    21              7   21_Data7
    22              1   22_Data1
    22              2   22_Data2
我正在尝试以下输出

    PROJ_ID LastUpdatedComment 5ThComment  4thComment 3rd Comment 2ndComment 1stComment
     22      22_Data2               -           -           -          -          -
     21      21_Data7            21_Data6   21_Data5   21_Data4     21_Data3     21_Data2
    20       20_Data7            20_Data6   20_Data5   20_Data4     20_Data3     20_Data2
我在下面尝试过,我可以获取最后更新的评论。有没有人能指导我去获取5,4,3,2,1条评论以及最后一条评论。。下面是我尝试过的问题

   SELECT CMTSEQ.PROJ_ID, CMTTXT.CMNT_TX AS [Last Updated Comment]
 FROM (SELECT PROJ_ID, MAX(CMNT_SEQ_NO) AS MaxSeqNo
 FROM comment
GROUP BY PROJ_ID) AS CMTSEQ
JOIN comment AS CMTTXT  ON CMTSEQ.PROJ_ID = CMTTXT.PROJ_ID AND CMTSEQ.MaxSeqNo =    CMTTXT.CMNT_SEQ_NO

下面是将获取上述所需O/p的查询

        create table #temptableforLastComment 
        (Proj_ID int,
        [Last Updated Comment] varchar(max))

        create table #temptableforsecondmostComment 
        (Proj_ID int,
        [2nd most updated comment] varchar(max))

        create table #temptableforthirdmostComment 
        (Proj_ID int,
        [3rd most updated comment] varchar(max))

        create table #temptableforfourthmostComment 
        (Proj_ID int,
        [4th most updated comment] varchar(max))

        create table #temptableforfifthmostComment 
        (Proj_ID int,
        [5th most updated comment] varchar(max))

        create table #temptableforsixthmostComment 
        (Proj_ID int,
        [6th most updated comment] varchar(max))

        declare @LastComment varchar(max)
        declare @secondmostComment varchar(max)
        declare @thirdmostComment varchar(max)
        declare @fourthmostComment varchar(max)
        declare @fifthmostComment varchar(max)
        declare @sixthmostComment varchar(max)

        Set @LastComment = 'SELECT CMTSEQ.PROJ_ID, CMTTXT.CMNT_TX AS [Last Updated Comment]
        FROM (SELECT PROJ_ID, MAX(CMNT_SEQ_NO) AS MaxSeqNo
        FROM comment
        GROUP BY PROJ_ID) AS CMTSEQ
        JOIN comment AS CMTTXT  ON CMTSEQ.PROJ_ID = CMTTXT.PROJ_ID AND CMTSEQ.MaxSeqNo = CMTTXT.CMNT_SEQ_NO'

        Set @secondmostComment = 'SELECT CMTSEQ.PROJ_ID, CMTTXT.CMNT_TX AS [2nd most updated comment]
        FROM (SELECT PROJ_ID, (MAX(CMNT_SEQ_NO)-1) AS MaxSeqNo
        FROM comment
        GROUP BY PROJ_ID) AS CMTSEQ
        JOIN comment AS CMTTXT  ON CMTSEQ.PROJ_ID = CMTTXT.PROJ_ID AND CMTSEQ.MaxSeqNo = CMTTXT.CMNT_SEQ_NO'

        Set @thirdmostComment = 'SELECT CMTSEQ.PROJ_ID, CMTTXT.CMNT_TX AS [3rd most updated comment]
        FROM (SELECT PROJ_ID, (MAX(CMNT_SEQ_NO)-2) AS MaxSeqNo
        FROM comment
        GROUP BY PROJ_ID) AS CMTSEQ
        JOIN comment AS CMTTXT  ON CMTSEQ.PROJ_ID = CMTTXT.PROJ_ID AND CMTSEQ.MaxSeqNo = CMTTXT.CMNT_SEQ_NO'

        Set @fourthmostComment = 'SELECT CMTSEQ.PROJ_ID, CMTTXT.CMNT_TX AS [3rd most updated comment]
        FROM (SELECT PROJ_ID, (MAX(CMNT_SEQ_NO)-3) AS MaxSeqNo
        FROM comment
        GROUP BY PROJ_ID) AS CMTSEQ
        JOIN comment AS CMTTXT  ON CMTSEQ.PROJ_ID = CMTTXT.PROJ_ID AND CMTSEQ.MaxSeqNo = CMTTXT.CMNT_SEQ_NO'

        Set @fifthmostComment = 'SELECT CMTSEQ.PROJ_ID, CMTTXT.CMNT_TX AS [3rd most updated comment]
        FROM (SELECT PROJ_ID, (MAX(CMNT_SEQ_NO)-4) AS MaxSeqNo
        FROM comment
        GROUP BY PROJ_ID) AS CMTSEQ
        JOIN comment AS CMTTXT  ON CMTSEQ.PROJ_ID = CMTTXT.PROJ_ID AND CMTSEQ.MaxSeqNo = CMTTXT.CMNT_SEQ_NO'

        Set @sixthmostComment = 'SELECT CMTSEQ.PROJ_ID, CMTTXT.CMNT_TX AS [3rd most updated comment]
        FROM (SELECT PROJ_ID, (MAX(CMNT_SEQ_NO)-5) AS MaxSeqNo
        FROM comment
        GROUP BY PROJ_ID) AS CMTSEQ
        JOIN comment AS CMTTXT  ON CMTSEQ.PROJ_ID = CMTTXT.PROJ_ID AND CMTSEQ.MaxSeqNo = CMTTXT.CMNT_SEQ_NO'

        insert into #temptableforLastComment execute (@LastComment)
        insert into #temptableforsecondmostComment execute (@secondmostComment)
        insert into #temptableforthirdmostComment execute (@thirdmostComment)
        insert into #temptableforfourthmostComment execute (@fourthmostComment)
        insert into #temptableforfifthmostComment execute (@fifthmostComment)
        insert into #temptableforsixthmostComment execute (@sixthmostComment)

        Select lastCmt.Proj_ID, lastCmt.[Last Updated Comment], sndCmnt.[2nd most updated comment], 
        thdCmnt.[3rd most updated comment], forthCmnt.[4th most updated comment],
        fifthCmnt.[5th most updated comment],sixthCmnt.[6th most updated comment] 
        from #temptableforLastComment lastCmt
        left join #temptableforsecondmostComment sndCmnt on lastCmt.Proj_ID = sndCmnt.Proj_ID
        left join #temptableforthirdmostComment thdCmnt on lastCmt.Proj_ID = thdCmnt.Proj_ID
        left join #temptableforfourthmostComment forthCmnt on lastCmt.Proj_ID = forthCmnt.Proj_ID
        left join #temptableforfifthmostComment fifthCmnt on lastCmt.Proj_ID = fifthCmnt.Proj_ID
        left join #temptableforsixthmostComment sixthCmnt on lastCmt.Proj_ID = sixthCmnt.Proj_ID


        drop table #temptableforLastComment
        drop table #temptableforsecondmostComment
        drop table #temptableforthirdmostComment
        drop table #temptableforfourthmostComment
        drop table #temptableforfifthmostComment
        drop table #temptableforsixthmostComment