Sql ose ACT/DESC/ECH组合应该是子表中它自己的行,也许FK关系回到了基表。@Romain:您在处理这些数据以获得所需结果时遇到的困难,希望能让您认识到在未来的设计中避免重复组的重要性。@BobJarvis是的。。。我从未见过这样的暴行。。。不幸的
Sql ose ACT/DESC/ECH组合应该是子表中它自己的行,也许FK关系回到了基表。@Romain:您在处理这些数据以获得所需结果时遇到的困难,希望能让您认识到在未来的设计中避免重复组的重要性。@BobJarvis是的。。。我从未见过这样的暴行。。。不幸的,sql,oracle,function,plsql,Sql,Oracle,Function,Plsql,ose ACT/DESC/ECH组合应该是子表中它自己的行,也许FK关系回到了基表。@Romain:您在处理这些数据以获得所需结果时遇到的困难,希望能让您认识到在未来的设计中避免重复组的重要性。@BobJarvis是的。。。我从未见过这样的暴行。。。不幸的是,这个制度已经实施了好几年,我不得不处理它 CREATE TABLE FORM ( ID_FORM INT, ACT_1 VARCHAR2 (10), ACT_2 VARCHAR2 (10), ACT_3 V
ose ACT/DESC/ECH组合应该是子表中它自己的行,也许FK关系回到了基表。@Romain:您在处理这些数据以获得所需结果时遇到的困难,希望能让您认识到在未来的设计中避免重复组的重要性。@BobJarvis是的。。。我从未见过这样的暴行。。。不幸的是,这个制度已经实施了好几年,我不得不处理它
CREATE TABLE FORM (
ID_FORM INT,
ACT_1 VARCHAR2 (10),
ACT_2 VARCHAR2 (10),
ACT_3 VARCHAR2 (10),
ACT_4 VARCHAR2 (10),
DESC_1 VARCHAR2 (10),
DESC_2 VARCHAR2 (10),
DESC_3 VARCHAR2 (10),
DESC_4 VARCHAR2 (10),
ECH_1 INT,
ECH_2 INT,
ECH_3 INT,
ECH_4 INT
);
INSERT INTO FORM VALUES ('1','A1','A2','A3',null,'D1','D2','D3',null,'2','12','6',null);
INSERT INTO FORM VALUES ('2','A1','A1','A3',null,'D1','D2','D1',null,'2','2','2',null);
INSERT INTO FORM VALUES ('3','A3','A3','A1',null,'D4','D4','D1',null,'2','2','12',null);
ACT_1|| DESC_1|| ECH_1 -> presta1
ACT_2|| DESC_2|| ECH_2 -> presta2
ACT_3|| DESC_3|| ECH_3 -> presta3
ACT_4|| DESC_4|| ECH_4 -> presta4
select
ACT_1|| DESC_1|| ECH_1 as presta1,
ACT_2|| DESC_2|| ECH_2 as presta2,
ACT_3|| DESC_3|| ECH_3 as presta3,
ACT_4|| DESC_4|| ECH_4 as presta4
from FORM;
PRESTA1 PRESTA2 PRESTA3 PRESTA4
A1D12 A2D212 A3D36 - (Function have to return 3)
A1D12 A1D22 A3D12 - (Function have to return 3)
A3D42 A3D42 A1D112 - (function have to return 2)
select ID_FORM, n
from FORM f
cross apply (
select count(*) n
from (
select f.act_1 || f.DESC_1 || f.ECH_1 presta from dual
union
select f.act_2 || f.DESC_2 || f.ECH_2 from dual
union
select f.act_3 || f.DESC_3 || f.ECH_3 from dual
union
select f.act_4 || f.DESC_4 || f.ECH_4 from dual
)
where presta is not null
)