select c_fml  from t_view_cal where c_fml_cde = '折扣价' and c_data_view = 'VW_ORDER' 查到的c_fml字段的值是vw_order的字段要从vw_order中查询这个字段的值该怎么查啊

解决方案 »

  1.   

     可以做连接啊 inner join 就行了
      

  2.   

    select * from (
    select c_fml  from t_view_cal where c_fml_cde = '折扣价' and c_data_view = 'VW_ORDER') a
    where a. c_fml  ='vw_order'
      

  3.   

    t_view_cal 表内容如下:
    C_DATA_VIEW    C_CN_CDE    C_FML_CDE   C_FML_NAME   C_FML
    VW_ORDER       snow         折扣价       折扣价        n_unitprice*n_quantity
    VW_ORDER 表内容如下:
    C_PRODUCT   C_MONTH   N_UNITPRICE   N_QUANTITY   N_DISCOUNT  C_CUSTOMER  C_PRODUCT_ID
    U盘           2008-01   18.60         9.00         0.00        wangjing     p004现在要先从t_view_cal表中查询到C_FML的值n_unitprice*n_quantity,然后,作为一个新的字段,从vw_order表中查询出该字段的值。如果采用两个SQL,容易select c_fml  from t_view_cal where c_fml_cde = '折扣价' and c_data_view = 'VW_ORDER'
    select (n_unitprice*n_quantity),n_unitprice,n_quantity from vw_order但是,如何把这两个SQL拼接起来呢?
      

  4.   

    问一下n_unitprice*n_quantity是表vw_order表中的二个字段名吗??也就是说,你第一个SQL语句查询出来的值要在表t_view_cal中查询出n_quantity和n_unitprice二个字段的值要一起查出来吗??
      

  5.   

    查询到C_FML的值n_unitprice*n_quantity,然后,作为一个新的字段,从vw_order表中查询出该字段的值。
    我晕啦,你的vw_order存在n_unitprice*n_quantity这样的字段吗?
    头疼
      

  6.   

    终于看明白你的意思了,
    你这样通过一般的sql不能实现(值作为列名),必须使用动态sql
    给你写个oracle的函数实现CREATE OR REPLACE FUNCTION F_COLVALUE RETURN VARCHAR2 IS
      V_SQL     VARCHAR2(300); --动态sql
      V_COLNAME VARCHAR2(200);--动态列名
       v_backvlaue VARCHAR2(200);--返回值BEGIN
      SELECT  C_FML  INTO V_COLNAME from t_view_cal where c_fml_cde = '折扣价' and c_data_view = 'VW_ORDER'   V_SQL := ' SELECT '||V_COLNAME||'  from vw_order  ';
    EXECUTE IMMEDIATE  V_SQL  INTO  v_backvlaue ;
    RETURN(v_backvlaue );
    END F_COLVALUE;
    如果不写函数或者存储过程,只能在java里面使用两次查询啦。o(∩_∩)o...哈哈