亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

SQL SERVER特殊行轉(zhuǎn)列案列一則

系統(tǒng) 2164 0
原文: SQL SERVER特殊行轉(zhuǎn)列案列一則

? 今天有個同事找我,他說他有個需求,需要進行行轉(zhuǎn)列,但是又跟一般的行轉(zhuǎn)列有些區(qū)別,具體需求如下所說,需要將表1的數(shù)據(jù)轉(zhuǎn)換為表2的顯示格式.

image

我想了一下,給出了一個解決方法,具體如下所示(先給出測試數(shù)據(jù))

        INSERT 
        
          INTO
        
         TEST 
      
        
          SELECT
        
         1,??? 1,??? 
        
          '定型名稱'
        
        ,??? 
        
          '預(yù)定型'
        
        ?????????? 
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
         1,??? 2,??? 
        
          '進布方式'
        
        ,??? 
        
          '調(diào)平'
        
        ???????????? 
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
         1,??? 3,??? 
        
          '21米長定型機開機速度'
        
        ,??? 
        
          '25'
        
        ??? 
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
         1,??? 4,??? 
        
          '烘箱溫度'
        
        ,??? 
        
          '195'
        
        ???????????? 
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
         1,??? 5,??? 
        
          '門幅(CM)'
        
        ,??? 
        
          '200-210-210'
        
        ???? 
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
         2,??? 1,??? 
        
          '過軟'
        
        ,??? 
        
          'na'
        
        ????????????????? 
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
         2,??? 2,??? 
        
          '調(diào)平'
        
        ,??? 
        
          'na'
        
        ????????????????? 
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
         2,??? 3,??? 
        
          '25'
        
        ,??? 
        
          '+/-0.5'
        
        ??????????????? 
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
         2,??? 4,??? 
        
          '150'
        
        ,??? 
        
          '+/-5℃頭尾烘箱除外'
        
        ?? 
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
         2,??? 5,??? 
        
          '188-198-198'
        
        ,??? 
        
          '+/-3'
        
      

實現(xiàn)其功能的SQL語句如下所示

        
          WITH
        
         T
      
        
          AS
        
      
        (
      
        
          SELECT
        
        ?
        
          NO
        
        , ROW_NUMBER() 
        
          OVER
        
         (PARTITION? 
        
          BY
        
        ?
        
          NO
        
        ?
        
          ORDER
        
        ?
        
          BY
        
         STEP) 
        
          AS
        
         ROWID, NAME, 
        
          VAlUE
        
        ?
        
          FROM
        
         TEST
      
        ) 
      
        
          SELECT
        
        ?
        
          NO
        
        ,? 
        
          MAX
        
        (NAME) 
        
          AS
        
         NAME, 
        
          MAX
        
        (
        
          VALUE
        
        ) 
        
          AS
        
        ?
        
          VALUE
        
        , 
        
          MAX
        
        (NAME2) 
        
          AS
        
         NAME2 , 
        
          MAX
        
        (VALUE2) 
        
          AS
        
         VALUE2
      
        
          FROM
        
      
        (
      
        
          SELECT
        
        ?
        
          NO
        
        , NAME 
        
          AS
        
         NAME, 
        
          VALUE
        
        ?
        
          AS
        
        ?
        
          VALUE
        
        , 
        
          NULL
        
        ?
        
          AS
        
         NAME2, 
        
          NULL
        
        ?
        
          AS
        
         VALUE2 
        
          FROM
        
         T 
        
          WHERE
        
         ROWID =1
      
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
        ?
        
          NO
        
        , 
        
          NULL
        
        ?
        
          AS
        
         NAME ,
        
          NULL
        
        ?
        
          AS
        
        ?
        
          VALUE
        
        , NAME 
        
          AS
        
         NAME2, 
        
          VALUE
        
        ?
        
          AS
        
         VALUE2 
        
          FROM
        
         T 
        
          WHERE
        
         ROWID =2
      
        ) TT
      
        
          GROUP
        
        ?
        
          BY
        
         NO
      

clipboard[4]

但是這樣有一個弊端就是同一NO的記錄不定(不知道有多少條記錄),那么上面SQL語句就不知道怎么寫了,好在這個需求每個NO最多只有四條記錄,所以可以寫成下面. 如果記錄數(shù)再多的話,這個SQL語句就寫的很糾結(jié)。暫時也沒有想到更好的解決方法。

        
          WITH
        
         T
      
        
          AS
        
      
        (
      
        
          SELECT
        
        ?
        
          NO
        
        , ROW_NUMBER() 
        
          OVER
        
         (PARTITION? 
        
          BY
        
        ?
        
          NO
        
        ?
        
          ORDER
        
        ?
        
          BY
        
         STEP) 
        
          AS
        
         ROWID, NAME, 
        
          VAlUE
        
        ?
        
          FROM
        
         TEST
      
        ) 
      
        
          SELECT
        
        ?
        
          NO
        
        , 
        
          MAX
        
        (NAME)? 
        
          AS
        
         NAME? , 
        
          MAX
        
        (
        
          VALUE
        
        )? 
        
          AS
        
        ?
        
          VALUE
        
        ?
      
        ?? , 
        
          MAX
        
        (NAME2) 
        
          AS
        
         NAME2 , 
        
          MAX
        
        (VALUE2) 
        
          AS
        
         VALUE2
      
        ?? , 
        
          MAX
        
        (NAME3) 
        
          AS
        
         NAME3 , 
        
          MAX
        
        (VALUE3) 
        
          AS
        
         VALUE3
      
        ?? , 
        
          MAX
        
        (NAME4) 
        
          AS
        
         NAME4 , 
        
          MAX
        
        (VALUE4) 
        
          AS
        
         VALUE4
      
        
          FROM
        
      
        (
      
        
          SELECT
        
        ?
        
          NO
        
        , NAME 
        
          AS
        
         NAME , 
        
          VALUE
        
        ?
        
          AS
        
        ?
        
          VALUE
        
        ? , 
      
        ???? 
        
          NULL
        
        ?
        
          AS
        
         NAME2, 
        
          NULL
        
        ? 
        
          AS
        
         VALUE2 ,
      
        ???? 
        
          NULL
        
        ?
        
          AS
        
         NAME3, 
        
          NULL
        
        ? 
        
          AS
        
         VALUE3 ,
      
        ???? 
        
          NULL
        
        ?
        
          AS
        
         NAME4, 
        
          NULL
        
        ? 
        
          AS
        
         VALUE4
      
        
          FROM
        
         T 
        
          WHERE
        
         ROWID =1
      
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
        ?
        
          NO
        
        , 
        
          NULL
        
        ?
        
          AS
        
         NAME ,? 
        
          NULL
        
        ?
        
          AS
        
        ?
        
          VALUE
        
        ? , 
      
        ???? NAME 
        
          AS
        
         NAME2, 
        
          VALUE
        
        ?
        
          AS
        
         VALUE2 ,
      
        ???? 
        
          NULL
        
        ?
        
          AS
        
         NAME3, 
        
          NULL
        
        ? 
        
          AS
        
         VALUE3 ,
      
        ???? 
        
          NULL
        
        ?
        
          AS
        
         NAME3, 
        
          NULL
        
        ? 
        
          AS
        
         VALUE4
      
        
          FROM
        
         T 
        
          WHERE
        
         ROWID =2
      
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
        ?
        
          NO
        
        , 
        
          NULL
        
        ?
        
          AS
        
         NAME , 
        
          NULL
        
        ? 
        
          AS
        
        ?
        
          VALUE
        
        ? , 
      
        ???? 
        
          NULL
        
        ?
        
          AS
        
         NAME2, 
        
          NULL
        
        ? 
        
          AS
        
         VALUE2 ,
      
        ???? NAME 
        
          AS
        
         NAME3, 
        
          VALUE
        
        ?
        
          AS
        
         VALUE3 ,
      
        ???? 
        
          NULL
        
        ?
        
          AS
        
         NAME4, 
        
          NULL
        
        ? 
        
          AS
        
         VALUE4
      
        
          FROM
        
         T 
        
          WHERE
        
         ROWID =3
      
        
          UNION
        
        ?
        
          ALL
        
      
        
          SELECT
        
        ?
        
          NO
        
        , 
        
          NULL
        
        ?
        
          AS
        
         NAME , 
        
          NULL
        
        ? 
        
          AS
        
        ?
        
          VALUE
        
        ? , 
      
        ???? 
        
          NULL
        
        ?
        
          AS
        
         NAME2, 
        
          NULL
        
        ? 
        
          AS
        
         VALUE2 ,
      
        ???? 
        
          NULL
        
        ?
        
          AS
        
         NAME3, 
        
          NULL
        
        ? 
        
          AS
        
         VALUE3 ,
      
        ???? NAME 
        
          AS
        
         NAME4, 
        
          VALUE
        
        ?
        
          AS
        
         VALUE4 
      
        
          FROM
        
         T 
        
          WHERE
        
         ROWID =4
      
        ) TT
      
        
          GROUP
        
        ?
        
          BY
        
         NO
      

SQL SERVER特殊行轉(zhuǎn)列案列一則


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产成人亚洲欧美三区综合 | 国产欧美一区二区三区沐欲 | 色汉综合 | 手机看片日韩欧美 | 久久福利青草精品免费 | 亚洲国产一成人久久精品 | 国产一级高清视频 | 亚洲视频在线不卡 | 国产成人毛片视频不卡在线 | 国产爱视频 | 美女一级毛片免费观看 | 久久国产国内精品对话对白 | 日本精品在线观看视频 | 99精品久久精品一区二区 | 日本三级11k影院在线 | 日韩免费毛片视频 | 五月婷婷网站 | 亚洲一区二区三区福利在线 | 久久穴 | 欧美日韩在线视频 | 中文字幕在线免费观看视频 | 色综合欧美色综合七久久 | 久久久久国产精品免费看 | 视频播放在线观看精品视频 | 真实的国产乱xxxx | 日本特级爽毛片叫声 | 麻豆久久婷婷国产综合五月 | 热灸灸这里只有精品 | 亚洲欧美精品国产一区色综合 | 在线观看国产一区二区三区 | 婷婷色综合网 | 特级片毛片 | 欧美中文在线观看 | 久艹视频在线 | 伊人365影院 | 久久在线播放 | 成人精品视频一区二区在线 | 久久精品国产精品青草图片 | 亚洲人成网站在线观看青青 | 免费在线黄色网 | 九九热视频精品在线 |