Jcat
          寵辱不驚,閑看庭前花開花落~~
          posts - 173,comments - 67,trackbacks - 0
          -- Test?Case
          create ? table ?sale(
          sale_id?
          char ( 1 )
          ,sale_type?
          char ( 1 )
          )
          --
          insert ? into ?sale? values ?( ' a ' , ' Y ' );
          insert ? into ?sale? values ?( ' b ' , ' N ' );
          insert ? into ?sale? values ?( ' b ' , ' Y ' );
          insert ? into ?sale? values ?( ' b ' , ' Y ' );
          insert ? into ?sale? values ?( ' c ' , ' Y ' );
          insert ? into ?sale? values ?( ' c ' , ' N ' );
          insert ? into ?sale? values ?( ' d ' , ' N ' );
          insert ? into ?sale? values ?( ' d ' , ' N ' );

          Count the number of 'Y' and the number of? 'N' separately
          -- full?join
          select ? * ? from ?
          (
          select ?sale_id,? count ( * )? as ?num_y? from ?sale
          where ?sale_type = ' Y '
          group ? by ?sale_id
          )?sale_y
          full ? join
          (
          select ?sale_id,? count ( * )? as ?num_n? from ?sale
          where ?sale_type = ' N '
          group ? by ?sale_id
          )?sale_n
          using?(sale_id)
          order ? by ?sale_id

          -- decode
          select ?sale_id
          ?,
          sum (decode(sale_type, ' Y ' , 1 , 0 ))? as ?num_y?? -- note?using?sum?to?implement?count
          , sum (decode(sale_type, ' N ' , 1 , 0 ))? as ?num_n
          from ?sale
          group ? by ?sale_id
          order ? by ?sale_id

          -- case
          select ?sale_id
          ?,
          sum ( case ? when ?sale_type = ' Y ' ? then ? 1 ? else ? 0 ? end )? as ?num_y?? -- note?using?sum?to?implement?count
          , sum ( case ? when ?sale_type = ' N ' ? then ? 1 ? else ? 0 ? end )? as ?num_n
          from ?sale
          group ? by ?sale_id
          order ? by ?sale_id

          Separate sale_type column
          -- union?all
          select ?sale_id,?sale_type? as ?type_y,? null
          from ?sale
          where ?sale_type = ' Y '
          union ? all
          select ?sale_id,? null ,?sale_type? as ?type_n
          from ?sale
          where ?sale_type = ' N '
          order ? by ?sale_id

          -- decode
          select ?sale_id
          ,decode(sale_type,
          ' Y ' , ' Y ' , null ) as type_y
          ,decode(sale_type,
          ' N ' , ' N ' , null ) as type_n
          from ?sale
          ?
          -- case
          select ?sale_id
          ,(
          case ? when ?sale_type = ' Y ' ? then ? ' Y ' ? else ? null ? end )? as ?type_y
          ,(
          case ? when ?sale_type = ' N ' ? then ? ' N ' ? else ? null ? end )? as ?type_n
          from ?sale
          posted on 2006-12-05 13:11 Jcat 閱讀(256) 評論(0)  編輯  收藏 所屬分類: Database
          主站蜘蛛池模板: 平和县| 吉林省| 洪雅县| 深泽县| 克拉玛依市| 报价| 东海县| 桂阳县| 鄯善县| 东乡县| 资源县| 台北市| 宁蒗| 岚皋县| 高平市| 明水县| 滨海县| 景宁| 东乌| 永州市| 义乌市| 海淀区| 岳普湖县| 宝清县| 云龙县| 饶平县| 英超| 阳谷县| 海原县| 桦南县| 凤庆县| 昌平区| 弋阳县| 遂溪县| 互助| 密云县| 兴城市| 建湖县| 浮梁县| 颍上县| 郓城县|