乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      SQL 行轉(zhuǎn)列,列轉(zhuǎn)行

       L羅樂(lè) 2019-05-22

      行列轉(zhuǎn)換在做報(bào)表分析時(shí)還是經(jīng)常會(huì)遇到的,今天就說(shuō)一下如何實(shí)現(xiàn)行列轉(zhuǎn)換吧。

      行列轉(zhuǎn)換就是如下圖所示兩種展示形式的互相轉(zhuǎn)換

      行轉(zhuǎn)列

      假如我們有下表:

      SELECT *FROM studentPIVOT ( SUM(score) FOR subject IN (語(yǔ)文, 數(shù)學(xué), 英語(yǔ)))

      通過(guò)上面 SQL 語(yǔ)句即可得到下面的結(jié)果

      PIVOT 后跟一個(gè)聚合函數(shù)來(lái)拿到結(jié)果,F(xiàn)OR 后面跟的科目是我們要轉(zhuǎn)換的列,這樣的話(huà)科目中的語(yǔ)文、數(shù)學(xué)、英語(yǔ)就就被轉(zhuǎn)換為列。IN 后面跟的就是具體的科目值。

      當(dāng)然我們也可以用 CASE WHEN 得到同樣的結(jié)果,就是寫(xiě)起來(lái)麻煩一點(diǎn)。

      SELECT name,  MAX(  CASE    WHEN subject='語(yǔ)文'    THEN score    ELSE 0  END) AS '語(yǔ)文',  MAX(  CASE    WHEN subject='數(shù)學(xué)'    THEN score    ELSE 0  END) AS '數(shù)學(xué)',  MAX(  CASE    WHEN subject='英語(yǔ)'    THEN score    ELSE 0  END) AS '英語(yǔ)'FROM studentGROUP BY name

      使用 CASE WHEN 可以得到和 PIVOT 同樣的結(jié)果,沒(méi)有 PIVOT 簡(jiǎn)單直觀。

      列轉(zhuǎn)行

      假設(shè)我們有下表 student1

      SELECT *FROM student1UNPIVOT ( score FOR subject IN ('語(yǔ)文','數(shù)學(xué)','英語(yǔ)'))

      通過(guò) UNPIVOT 即可得到如下結(jié)果:

      我們也可以使用下面方法得到同樣結(jié)果

      SELECT    NAME,    '語(yǔ)文' AS subject ,    MAX('語(yǔ)文') AS scoreFROM student1 GROUP BY NAMEUNIONSELECT    NAME,    '數(shù)學(xué)' AS subject ,    MAX('數(shù)學(xué)') AS scoreFROM student1 GROUP BY NAMEUNIONSELECT    NAME,    '英語(yǔ)' AS subject ,    MAX('英語(yǔ)') AS scoreFROM student1 GROUP BY NAME

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多