终于看明白你的意思了, 你这样通过一般的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...哈哈
select c_fml from t_view_cal where c_fml_cde = '折扣价' and c_data_view = 'VW_ORDER') a
where a. c_fml ='vw_order'
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拼接起来呢?
我晕啦,你的vw_order存在n_unitprice*n_quantity这样的字段吗?
头疼
你这样通过一般的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...哈哈