2017-01-24 38 views
-1

DATA:将多列到一个基于价值从一列

+--------+------+------+------+------+ 
| WEEK_NO| Week1| Week2| Week3|Week4 | 
+--------+------+------+------+------+ 
|  1 | 0.5 | 0.2 | 0.3 |0.4 | 
|  2 | 0.5 | 0.2 | 0.3 |0.4 | 
|  3 | 0.5 | 0.2 | 0.3 |0.4 | 
|  4 | 0.5 | 0.2 | 0.3 |0.4 | 
+--------+------+------+------+------+ 

所需的输出:

+--------+------+------+------+------+-------------+ 
| WEEK_NO| Week1| Week2| Week3|Week4 |COLUMN NEEDED| 
+--------+------+------+------+------+-------------+ 
|  1 | 0.5 | 0.2 | 0.3 |0.4 | 0.5  | 
|  2 | 0.5 | 0.2 | 0.3 |0.4 | 0.2  | 
|  3 | 0.5 | 0.2 | 0.3 |0.4 | 0.3  | 
|  4 | 0.5 | 0.2 | 0.3 |0.4 | 0.4  | 
+--------+------+------+------+------+-------------+ 
+1

它会以不愉快的病例陈述结束......例如:'CASE WHEN WEEK_NO = 1 then WEEK1' ..但为什么数据会以这种方式保存?也许是一个测验! –

+0

这听起来好像你应该考虑规范你的数据模型。 –

+0

@a_horse_with_no_name \t 我同意你的观点,但不知何故,数据是在上述结构,不能改变在源 –

回答

1

使用CASE声明

SELECT CASE 
     WHEN WEEK_NO = 1 THEN Week1 
     WHEN WEEK_NO = 2 THEN Week2 
     WHEN WEEK_NO = 3 THEN Week3 
     WHEN WEEK_NO = 4 THEN Week4 
     END AS "COLUMN NEEDED" 
FROM yourtable 

或者使用Decode

Select DECODE (WEEK_NO, 1, Week1, 
         2, Week2, 
         3, Week3, 
         4, Week4) 
From yourtable 

考虑更改表结构

+0

我试过这个,但它不适用于PL/SQL过程,下面是我试过 代码试用: 选择案例substr(to_char(WEEK_NO,种子编号), - 2,2) 当'01'时,则W1 当'02'时则W2 当'03'时,则W3 。 。 。 。 '49' 时,那么W49 '50' 时,那么W50 时, '五一',那么W51 则 '52' 时,W52 END作为WEEK_COEFF FROM表 –

+0

@Abhijeetsingh - 您是否收到任何错误? –

+0

错误: ORA-06550:第22行,第7列: PLS-00103:遇到以下符号之一时遇到符号“01”: *&= - +; at in是mod的余数,不是rem <指数(**)><>或!=或= => = <= <>和或类似的像like4 likec between || multiset成员submultiset 06550。00000 - “行%s,列%s:\ n%s” *原因:通常是PL/SQL编译错误。 *操作: –

0

这些重复的数据在原表中的行是非常可疑的。显然,我们对这个结构的目的一无所知,但它看起来像是数据建模的失败。应用First Normal Form会给...

create table weeks (
    week_no number primary key 
    , week_coeff number not null) 
/

所以查询将是:

select week_no 
     , week_coeff as column_needed 
from weeks 
/

如果这似乎太简单化,那么请解释一下你正在建模的业务规则。


“但不知数据在上述结构来与不能在源被改变。”

当然它可以被改变,它只是一个数据结构。但办公室政治是办公室政治。祝你好运,建立可怕的,脆弱的代码。

+0

有你的点,但不知何故数据在上述结构来与不能在所述被改变资源 。 –

相关问题