SELECT A.BB_ID,A.BB_NAME,A.BB_CHINANAME,A.BU_ID AA,C.ID,C.BB_NAME,C.C_DATE,
(SELECT BITNO_VALUE FROM COM_MXZ WHERE TO_CHAR(C_DATE,'hh24:mi') >= '00:00' AND TO_CHAR(C_DATE,'hh24:mi') <= '01:00' AND BB_NAME = A.BB_NAME) 零点,
(SELECT BITNO_VALUE FROM COM_MXZ WHERE TO_CHAR(C_DATE,'hh24:mi') >= '13:00' AND TO_CHAR(C_DATE,'hh24:mi') <= '14:00' AND BB_NAME = A.BB_NAME) 一点
FROM BASE_BITNO A LEFT JOIN COM_MXZ C ON (C.BB_NAME = A.BB_NAME) 
WHERE A.BB_NAME=C.BB_NAME
零点和一点如果是一条记录的话就可以返回,但是如果是多条记录的话就提示ORA-01427: 单行子查询返回多个行这个错误
我找了好半天,不知道为什么,有高手解决一下么?

解决方案 »

  1.   


    SELECT A.BB_ID,A.BB_NAME,A.BB_CHINANAME,A.BU_ID AA,C.ID,C.BB_NAME,C.C_DATE,
         
    (case when TO_CHAR(C_DATE,'hh24:mi') >= '00:00' AND TO_CHAR(C_DATE,'hh24:mi') <= '01:00'
     then BITNO_VALUE else null end) 零点,
    (case when TO_CHAR(C_DATE,'hh24:mi') >= '13:00' AND TO_CHAR(C_DATE,'hh24:mi') <= '14:00'
     then BITNO_VALUE else null end) 一点
    FROM BASE_BITNO A LEFT JOIN COM_MXZ C ON (C.BB_NAME = A.BB_NAME) 
      

  2.   

    在select 列处写子查询要求最后只能返回一行。
    试一下这样能否达到效果
    SELECT A.BB_ID,
           A.BB_NAME,
           A.BB_CHINANAME,
           A.BU_ID AA,
           C.ID,
           C.BB_NAME,
           C.C_DATE,
           (CASE WHEN TO_CHAR(C_DATE, 'hh24:mi') >= '00:00' AND
                   TO_CHAR(C_DATE, 'hh24:mi') <= '01:00' THEN
                   BITNO_VALUE ELSE NULL
                   END)
                    零点,
           (CASE WHEN 
              TO_CHAR(C_DATE, 'hh24:mi') >= '13:00' AND
                   TO_CHAR(C_DATE, 'hh24:mi') <= '14:00' THEN
                   BITNO_VALUE ELSE NULL END) 一点
      FROM BASE_BITNO A
      LEFT JOIN COM_MXZ C
        ON (C.BB_NAME = A.BB_NAME)
     WHERE A.BB_NAME = C.BB_NAME
      

  3.   


    SELECT A.BB_ID,A.BB_NAME,A.BB_CHINANAME,A.BU_ID AA,C.ID,C.BB_NAME,C.C_DATE,
    (case 
    when TO_CHAR(c.C_DATE,'hh24:mi') >= '00:00' AND TO_CHAR(c.C_DATE,'hh24:mi') <= '01:00' then c.BITNO_VALUE else null end ) 零点,
    (case
     when TO_CHAR(c.C_DATE,'hh24:mi') >= '13:00' AND TO_CHAR(c.C_DATE,'hh24:mi') <= '14:00' then c.BITNO_VALUE else null end ) 一点
    FROM BASE_BITNO A LEFT JOIN COM_MXZ C ON (C.BB_NAME = A.BB_NAME) 
    WHERE A.BB_NAME=C.BB_NAME
      

  4.   

    --试试这个
    SELECT A.BB_ID,A.BB_NAME,A.BB_CHINANAME,A.BU_ID AA,C.ID,C.BB_NAME,C.C_DATE,
         
    (case when TO_CHAR(C_DATE,'hh24:mi') >= '00:00' AND TO_CHAR(C_DATE,'hh24:mi') <= '01:00'
     then BITNO_VALUE else null end) 零点,
    (case when TO_CHAR(C_DATE,'hh24:mi') >= '13:00' AND TO_CHAR(C_DATE,'hh24:mi') <= '14:00'
     then BITNO_VALUE else null end) 一点
    FROM BASE_BITNO A LEFT JOIN COM_MXZ C ON (C.BB_NAME = A.BB_NAME) 
    WHERE A.BB_NAME=C.BB_NAME