Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Oracle)如何在具有水平和垂直坐标的表中选择数据?_Oracle_Function_Select_Row - Fatal编程技术网

(Oracle)如何在具有水平和垂直坐标的表中选择数据?

(Oracle)如何在具有水平和垂直坐标的表中选择数据?,oracle,function,select,row,Oracle,Function,Select,Row,我的目标是制作一个函数,用垂直和水平坐标选择Tableau中的数据。如何制作我的功能体? 函数应该根据函数参数I_HORIZENT动态选择列,我不知道如何处理该参数 例如,如果垂直坐标为“E1”,而水平坐标为“RP” 然后函数应返回“12”。垂直坐标是一列K1。 水平坐标是列NUM=0的一行 NUM K1 K2 K3 K4 --- --- ---- ---- ---- 0 RK RP RN 1 E1 10 12 11

我的目标是制作一个函数,用垂直和水平坐标选择Tableau中的数据。如何制作我的功能体? 函数应该根据函数参数I_HORIZENT动态选择列,我不知道如何处理该参数

例如,如果垂直坐标为“E1”,而水平坐标为“RP” 然后函数应返回“12”。垂直坐标是一列K1。 水平坐标是列NUM=0的一行

  NUM  K1    K2  K3  K4 
  --- ---  ---- ---- ----
  0          RK  RP   RN
  1   E1     10  12   11 
  2   E2     21  23   19
表和我的函数如下所示

CREATE TABLE DATAA ( 
NUM VARCHAR2(15),
K1 VARCHAR2(15),
K2 VARCHAR2(15),
K3 VARCHAR2(15),
K4 VARCHAR2(15)
);

INSERT INTO DATAA VALUES('0',NULL,'RK','RP','RN');
INSERT INTO DATAA VALUES('1','E1','10','12','11');
INSERT INTO DATAA VALUES('2','E2','21','23','19');

SELECT * FROM DATAA;



CREATE OR REPLACE FUNCTION MYFUN
(
I_VERTICAL IN VARCHAR2.
I_HORIZENT IN VARCHAR2
)RETURN VARCHAR2 AS V_VALUE VARCHAR2;
BEGIN
---



?  --How to make my function body?



---
RETURN V_VALUE;
END;

对此,您不需要动态SQL;您可以使用UNPIVOT:

使用unpivoted num、col_名称、col_索引、值作为 挑选* 来自DATAA K2为2,K3为3,K4为4时col_索引的UNPIVOT值 选择r.value 从SELECT*FROM unpivoted,其中value='RP'和num='0'c 内连接 从未插入的字段中选择*,其中col_name='E1'r 关于r.col_索引=c.col_索引 产出:

从DUAL中选择MYFUN'E1'、'RP'; 产出:

小提琴

| VALUE | | :---- | | 12 | | MYFUN('E1','RP') | | :--------------- | | 12 |