<small id='OoDa8'></small> <noframes id='DsQH2q3'>

  • <tfoot id='ZbdzA'></tfoot>

      <legend id='Bg7GPF'><style id='ipqx8KXY'><dir id='lOcyR6rso5'><q id='5Kjyt1QZ'></q></dir></style></legend>
      <i id='JU8wdD5O4H'><tr id='v9MOU3Wqpb'><dt id='J2vCWKd'><q id='oAfSHN'><span id='eVhMOqz'><b id='5bFk4Bm6'><form id='XyYiaCh8e'><ins id='rzjV3'></ins><ul id='Z4E5xPlGCM'></ul><sub id='tAB0Smc'></sub></form><legend id='vQigdWK'></legend><bdo id='Ll7Z2VC'><pre id='EcIgOpS'><center id='TJhAIFGCM'></center></pre></bdo></b><th id='q36XI'></th></span></q></dt></tr></i><div id='JELMf6z'><tfoot id='TRCGO84oug'></tfoot><dl id='RYoT'><fieldset id='rzblvIy4'></fieldset></dl></div>

          <bdo id='CemBg8ozM'></bdo><ul id='fo3S'></ul>

          1. <li id='7sVf8W6PHS'></li>
            登陆

            1号站开户-SQL高档常识——CASE的用法

            admin 2019-05-18 338人围观 ,发现0个评论

            CASE函数的类型

            CASE具有两种格局,简略CASE函数和CASE查找函数。这两种方法,大部分状况下能够完成相同的功用。


            简略CASE函数

            语法

            CASE column WHEN THEN value WHEN THEN value......ELSE value END

            示例

            CASE sex
            WHEN '1' THEN '男'
            WHEN '2' THEN '女'
            ELSE '其他' END


            CASE查找函数

            语法

            CASE WHEN [,] THEN value WHEN [,] THEN value......ELSE value END

            示例

            CASE WHEN sex = '1' THEN '男'
            WHEN sex = '2' THEN '女'
            ELSE '其他' END

            简略CASE 函数重在简练,可是它只适用于这种单字段的单值比较,而CASE 查找函数的长处在于适用于一切比较(包含多值比较)的状况。

            例如

            CASE WHEN sex = '1' AND age>18 THEN '成年男性'
            WHEN sex = '2' AND age>18 THEN '成年女人'
            ELSE '其他' END

            留意:CASE函数只回来第一个契合条件的值,剩余的CASE部分将会被主动疏忽。比如说,下面这段SQL,你永久无法得到“第二类”这个成果

            CASE W1号站开户-SQL高档常识——CASE的用法HEN Type IN ('a','b') THEN '第一类' 
            WHEN Type IN ('a') THEN '第二类'
            ELSE '其他类' END


            CASE行转列

            CASE用的比较广泛的功用便是行转列,便是将记载行里的数据按条件转化成详细的列。看如下的一个示例:

            IF OBJECT_ID('Score') IS NOT NULL DROP TABLE Score 
            GO
            CREATE TABLE Score(名字 NVARCHAR(10),课程 NVARCHAR(10),分数 IN苏玉珍T)
            INSERT INTO Score VALUES (N'张三',N'语文',74)
            INSERT INTO Score VALUES (N'张三',N'数学',83)
            INSERT INTO Score VALUES (N'张三',N'物理',93)
            INSERT INTO Score VALUES (N'李四',N'语文',74)
            INSERT INTO Score VALUES (N'李四',N'数学',84)
            INSERT INTO Score VALUES (N'李四',N'物理'1号站开户-SQL高档常识——CASE的用法,94)
            GO
            SELECT * FROM Score
            GO


            履行完成后的成果如图:



            现在咱们想完成这样的功用,便1号站开户-SQL高档常识——CASE的用法是将各学科作为独自的列来显现各个学生各科的成果。咱们能够对课程里的记载做如下的队伍转化:

            SELECT 名字,
            MAX(CASE 课程 WHEN N'语文' THEN 分数 ELSE 0 END) 语文,
            MAX(CASE 课程 WHEN N'数学' THEN 分数 ELSE 0 END) 数学,
            MAX(CASE 课程 WHEN N'物理' THEN 分数 ELSE 0 END) 物理
            FROM Score
            GROUP BY 名字


            履行成果如下:




            行转列新方法

            这样就很好的完成了队伍的转化了,当然这仅仅一个比较简略的比如,SQL Server 2005版之后有独自的队伍转化功用PIOVT,以下查询相同能够得到上面的成果:

            SELECT * FROM Score 
            PIVOT( MAX(分数) FOR 课程 IN (语文,数学,物理)) A

            其间FOR后边的是咱们行将1号站开户-SQL高档常识——CASE的用法进行行转列的列部分

            IN里边的是咱们行转列之后的列

            MAX是聚合IN里边的内容,也能够是其他聚合函数:SUM,MIN,COUNT等

            PIVOT写法比较固定,是CASE WHEN的一种简略写法。


            批注

            CASE是咱们在日常工作中运用十分频频的一个功用,能够很好的将咱们需求的数据独自的显现在一列里边,有助于对数据有个比较明晰的把握。与Excel的转置有点相似,可是其功用的多样性又比Excel更强一点。

            请关注微信公众号
            微信二维码
            不容错过
            Powered By Z-BlogPHP