以下场景的Sql查询
我有以下场景,需要为其编写sql查询 我有ICCID表和ICCID属性表,其中包含以下信息 我想找出2012年12月处于删除状态的所有活动iccid和iccid。对于处于删除状态的iccid,请在iccid属性表中记录iccid删除日期的date.to.change键以下场景的Sql查询,sql,database,plsql,Sql,Database,Plsql,我有以下场景,需要为其编写sql查询 我有ICCID表和ICCID属性表,其中包含以下信息 我想找出2012年12月处于删除状态的所有活动iccid和iccid。对于处于删除状态的iccid,请在iccid属性表中记录iccid删除日期的date.to.change键 this is my attempt, but that did not worked select e.ID_ICCID from ICCID_PROPERTY e where e.c_key ='STAT
this is my attempt, but that did not worked
select e.ID_ICCID from ICCID_PROPERTY e where
e.c_key ='STATE' and e.c_value='Active' or(
e.c_key ='STATE' and
e.c_value='Removed' and
e.c_key='date.to.change' and
to_date(e.c_value,'yyyymmdd') >=to_date('2012-DEC-01 00:00:00', 'YYYY-MON-DD HH24:MI:SS') and
to_date(e.c_value,'yyyymmdd') <= to_date('2012-DEC-31 23:59:59', 'YYYY-MON-DD HH24:MI:SS')
))
提前感谢您的帮助这是像这样的键值对设计的问题之一 您不能只检查单个属性行以查看其是否与搜索条件匹配,因为本例中的条件将跨越多个属性。。。您必须检查单亲行是否具有匹配的所有子属性:
SELECT
i.ICCID
FROM
ICCID i
WHERE
EXISTS (
SELECT 1
FROM ICCID_PROPERTY ip
WHERE
ip.ID_ICCID = i.ID_ICCID
AND ip.c_key = 'STATE'
AND ip.c_value = 'Active'
) OR (
EXISTS (
SELECT 1
FROM ICCID_PROPERTY ip
WHERE
ip.ID_ICCID = i.ID_ICCID
AND ip.c_key = 'STATE'
AND ip.c_value = 'Removed'
) AND
EXISTS (
SELECT 1
FROM ICCID_PROPERTY ip
WHERE
ip.ID_ICCID = i.ID_ICCID
AND ip.c_key = 'date.to.change'
AND to_date(ip.c_value,'yyyymmdd') >=
to_date('2012-DEC-01 00:00:00', 'YYYY-MON-DD HH24:MI:SS')
AND to_date(ip.c_value,'yyyymmdd') <=
to_date('2012-DEC-31 23:59:59', 'YYYY-MON-DD HH24:MI:SS')
)
)
我认为您可以三次加入属性表-可能类似于以下未经测试的内容:
SELECT I.ID_ICCID
FROM ICCID I
JOIN ICCID_Property IP ON I.ID_ICCID = IP.ID_ICCID AND IP.C_Key = 'STATE' AND IP.C_Value = 'Active'
JOIN ICCID_Property IP2 ON I.ID_ICCID = IP.ID_ICCID AND IP2.C_Key = 'STATE' AND IP2.C_Value= 'Removed'
JOIN ICCID_Property IP3 ON I.ID_ICCID = IP.ID_ICCID AND IP3.C_Key = 'date.to.change' AND to_date(IP3.C_Value,'yyyymmdd') >= to_date('2012-DEC-01 00:00:00', 'YYYY-MON-DD HH24:MI:SS')
AND to_date(IP3.C_Value,'yyyymmdd') <=
to_date('2012-DEC-31 23:59:59', 'YYYY-MON-DD HH24:MI:SS')
祝你好运。你试过什么了吗?如果是这样,请发布您的尝试,我也用我的尝试更新了问题