Sql 在数据库中存储具有多个条件的映射
我有一个SELECT语句,我必须映射键。我需要将此映射存储到数据库中,因为此映射可能会更改。由于映射条件仅基于一个键,因此相对简单Sql 在数据库中存储具有多个条件的映射,sql,database,oracle,oracle11g,relational-database,Sql,Database,Oracle,Oracle11g,Relational Database,我有一个SELECT语句,我必须映射键。我需要将此映射存储到数据库中,因为此映射可能会更改。由于映射条件仅基于一个键,因此相对简单 SELECT table.flield1 AS COL1 , (SELECT value from TransformationTable WHERE key = table.field2) AS COL2 [...] 现在我有一个例子,映射条件更复杂。在SQL中,它类似于: CASE WHEN table.field1 = 'ORG' AND table
SELECT
table.flield1 AS COL1
, (SELECT value from TransformationTable WHERE key = table.field2) AS COL2
[...]
现在我有一个例子,映射条件更复杂。在SQL中,它类似于:
CASE
WHEN table.field1 = 'ORG' AND table.field2 IN (1,2,3) THEN 01
WHEN table.field1 = 'ORG' AND table.field2 NOT IN (5,76,88) OR IN (9) THEN 02
WHEN table.field1 != 'ORG' AND table.field2 IN (1,2,3) THEN 03
END
如何在数据库中存储这样的条件,以便像示例1中那样选择值
有人有想法吗?基本上,要执行这项任务,您需要能够动态计算表达式的东西。我过去解决此类问题的唯一方法是:
玩得开心 如果您想要一个表格解决方案,那么我会想到这样的方法:
PARENT | CHILD | LOGICAL | COLUMN | OPERATOR | VALUES | OUTPUT |
OPERATOR ID | OPERATOR ID | OPERATOR | (expression) | OPERATOR | VALUES | ATTRIBUTE |
--------------------------- ---------------------------------------------------------------
10001 | 10003 | AND | field1 | IN | 1,2,3 | 01 |
10001 | 10004 | AND | field2 | NOT IN | 5,76,88 | 01 |
10002 | 10005 | | field1 | IN | ... | 02 |
10002 | 10006 | | field2 | NOT IN | ... | 02 |
列
父运算符ID
和子运算符ID
是附加的,以防您需要嵌套的and-OR运算符(…和(…或…)和(…或…)
当您说映射可以更改时,您的意思是什么?规则/代码的哪一部分是可更改的?