`
http_url
  • 浏览: 47545 次
  • 性别: Icon_minigender_1
  • 来自: 徐州
社区版块
存档分类
最新评论

用decode 实现行转列

SQL 
阅读更多

1           根据第一张表写出查询结果符合第2张表的语句(1--,2—女)

       (注:这是老师给的一个作业题,呵呵)

 

表一:populations

 

country        sex          population

-----------     --------     -----------------

中国                1                340

中国                2                260

美国                1                 45     

美国                2                 55

加拿大             1                 51

加拿大             2                 49

英国                1                 40 

英国                2                 60

根据表一生产如下查询结果:

 

国家               男               女

-----------     --------     -----------

中国                340            260

美国                 45              55

美加拿大           51              49     

英国                 40              60

 

代码如下: 

select country, sum(decode(sex,'1',num)) 男, sum(decode(sex,'2',num)) 女 from populations group by country;


 

 

 请问大牛们,劳驾一下,如果不用decode而用case 语句该怎么写呢??

 

 

分享到:
评论
3 楼 http_url 2009-02-06  
armorking  太感谢你了!~~
2 楼 http_url 2009-02-05  
<p>我是这样写的,竟然也可以</p>
<pre name="code" class="sql"> 1  select country,
2      sum(CASE sex WHEN '1' THEN num ELSE 0 END) 男,
3      sum(CASE sex WHEN '2' THEN num ELSE 0 END) 女
4  from population
5  group by country</pre>
<p><span style="font-size: small; color: #0000ff;"> </span></p>
<p><span style="font-size: small; color: #0000ff;">请问哪里有详细讲解Select语句的啊,英文的看不懂:-)</span></p>
1 楼 armorking 2009-02-05  
select country,
    sum(CASE WHEN(sex = '1') THEN num ELSE 0 END) 男,
    sum(CASE WHEN(sex = '2') THEN num ELSE 0 END) 女,
from populations
group by country

相关推荐

    oracle动态行转列

    本文将深入探讨如何通过Oracle中的存储过程实现动态“行转列”,并结合给定文件的信息,详细解析其工作原理、优点及应用场景。 ### 核心知识点:Oracle动态行转列 #### 1. 存储过程与动态SQL 存储过程是预编译的...

    oracle行转列较精典的解决方案

    通过使用`decode`函数结合`sum`聚合函数可以实现行转列的功能。`decode`函数可以根据不同的条件返回不同的值,当用于行列转换时,可以通过设置不同的条件来区分不同的列名,从而达到转换的目的。 ##### 2. 示例:将...

    ORACLE 列转行 DECODE函数用法

    DECODE函数在处理列转行的问题时,尤其适用于将多列数据合并到一行中,使得数据展示更加简洁明了。下面我们将详细讲解DECODE函数的使用方法以及如何在列转行操作中应用它。 DECODE函数的基本语法如下: ```sql ...

    oracle行转列oracle行转列

    在Oracle中,可以通过使用`DECODE`函数结合`GROUP BY`子句来实现行转列的效果。`DECODE`函数类似于其他编程语言中的`CASE`语句,用于条件判断。它接受多个参数,其中第一个参数是被比较的表达式,随后的参数成对出现...

    Oracle行转列

    这种操作在实际应用中非常有用,例如,在数据报表、数据分析和数据挖掘等领域都需要使用行转列操作。 1. 列转行 列转行是指将多个列数据合并成一个列数据。例如,有一个表t_col_row,其中包含多个列c1、c2、c3,...

    oracle 行转列

    当待转换的列是固定的时,可以采用`SUM`函数配合`DECODE`函数的方法来实现行转列。 **示例代码:** ```sql SELECT name, SUM(DECODE(km, '语文', cj, 0)) AS "语文", SUM(DECODE(km, '数学', cj, 0)) AS "数学",...

    关于oracle decode函数的用法

    在商品销售表`sale`的转化示例中,使用了DECODE函数来将每月的销售数据从行转为列,形成年份为行,各月销售金额为列的新结构。例如,为了计算每年1月的销售总额,使用了`SUM(DECODE(SUBSTRB(month,5,2),'01',sell,0)...

    Oracle实现行转换成列的方法

    在Oracle数据库中,这种行转列的操作可以通过多种方法实现,包括使用`PIVOT`操作、`DECODE`函数以及自定义的聚合函数等。下面我们将详细讨论这些方法,并结合提供的实例进行解析。 首先,我们来看一个简单的例子,...

    SQL语句的DECODE和NVL

    例如,在住房公积金报表置换实例中,可以使用 DECODE 函数将经办行的代码转换为相应的描述信息,然后使用 NVL 函数将 NULL 值转换为指定的值,以便进行进一步的数据处理。 DECODE 和 NVL 函数是 SQL 语句中两个非常...

    Oracle中Decode()函数的有关用法

    可以通过使用`DECODE()`函数结合`SUM()`函数实现这一目标。 ```sql CREATE OR REPLACE VIEW v_sale (year, month1, month2, month3, month4, month5, month6, month7, month8, month9, month10, month11, month12) ...

    Oracle的列转行问题

    作者提出了一个创新的解决方案,利用`DECODE`函数配合子查询来实现列转行,以提高查询效率。首先,创建一个临时的子查询(b),这个子查询生成了代表列名的`fid`值,即'数据 1', '数据 2', '数据 3'。然后,将这个子...

    decode函数[归类].pdf

    在实际应用中,DECODE函数可以结合其他函数,如NVL(用于处理NULL值)一起使用,以实现更丰富的逻辑处理。例如,如果需要在查询中处理可能为NULL的字段,可以这样做: ```sql SELECT DECODE(NULLABLE_COLUMN, NULL,...

    decode 加入clickhouse库之前代码

    在IT行业中,ClickHouse是一个高性能的列式数据库管理系统(Column-Oriented DBMS),主要用于在线分析处理(OLAP)和大数据存储。C和C++是用于开发ClickHouse的基础编程语言,因为它们提供了对硬件的底层访问,使得...

    Oracle中Decode()函数使用技巧

    Oracle中的Decode()函数是数据库查询时非常实用的一个工具,它允许你在SQL语句中实现简单的条件判断,类似于IF-THEN-ELSE逻辑。这个函数在处理数据时提供了灵活性,避免了复杂的CASE语句,使得代码更加简洁易读。...

    oracle的列转行问题

    在 Oracle 中,通常使用 decode 或者 case 函数与聚合函数联合实现列转行功能。但是,这种方法存在一些缺陷,例如性能问题和数据重复访问问题。在本文中,我们将介绍一种新的解决方案,来解决 Oracle 列转行问题。 ...

    Oracle行变列-存储过程

    在提供的存储过程中,`get_activity_code`就是一个实现行变列转换的例子。 该存储过程接收两个参数:`in_activity_code`(输入参数)和`out_curEmp`(输出参数)。`in_activity_code`用于指定活动代码,而`out_...

    数据库行列转换算法

    Oracle数据库提供了多种方法来实现这种转换,本篇将详细介绍如何在Oracle中进行行列转换,包括列转行、行转列以及各种复杂场景下的转换。 1. 列转行 列转行主要是将数据库表中的多列数据转换为多行数据。在Oracle...

Global site tag (gtag.js) - Google Analytics