请教各位高手:
   数据库中有四列,第一列是“检测指标”,第二列是A,第三列是B,第四列是C。第一列“检测指标”的值是A,B,C的组合,即可能是A,B,C也可能是A,B也可能是B,C。现在我想通过一条语句,取出检测指标中的项对应的值。比如“检测指标”列的值是“A,B"(AB之间有逗号),想要的结果是有三列,分别是:检测指标  A  B。

解决方案 »

  1.   

    JCZB        A      B      C
     A          10
     A,B        10     20
     B,C               12      30
     A,B,C      5      10     15
      

  2.   


    --根据你给的数据我分析你的表中应该还有一列主键,否则无法区分如第一条数据和第二条数据中的10 属于哪一个jczbWITH T AS(
      SELECT 1 ID,'A' JCZB,10 A,NULL B,NULL C FROM DUAL UNION ALL
      SELECT 2 ID,'A,B' JCZB,10 A,20 B,NULL C FROM DUAL UNION ALL
      SELECT 3 ID,'B,C' JCZB,NULL A,12 B,30 C FROM DUAL UNION ALL
      SELECT 4 ID,'A,B,C' JCZB,5 A,15 B,20 C FROM DUAL
    )SELECT ID,JCZB,A AS VALUE_,'A' AS ANS FROM T WHERE A IS NOT NULL
     UNION
     SELECT ID,JCZB,B AS VALUE_,'B' AS ANS FROM T WHERE B IS NOT NULL
     UNION
     SELECT ID,JCZB,C AS VALUE_,'C' AS ANS FROM T WHERE C IS NOT NULL
    ;
      

  3.   

    直接针对检测指标这个字段用instr(,)不就可以了嘛,判断两个,的位置,再分别substr去取A B C。