2017-02-24 64 views
1

原始表数据多列数据集和操作SQL

Original Table Data

select 
DTRQLFR.DETERMINATION_ID_FK, DTRQLFR.QUALIFIER_ID_FK, DTRQLFR.QUALIFIER_OPTION_ID_FK 
from IC_DTRMN_QLFR_XREF DTRQLFR 
WHERE 
(DTRQLFR.QUALIFIER_ID_FK, DTRQLFR.QUALIFIER_OPTION_ID_FK) IN ((1,1), (2,3), (3,6)); 

查询结果

Query Result

我的要求是需要申请一个对数据集第二操作像下面

((1,1) AND (2,3) AND (3,6)) ==> need to find DETERMINATION_ID_FK as 1 
    based on (DTRQLFR.QUALIFIER_ID_FK, DTRQLFR.QUALIFIER_OPTION_ID_FK) values 

预期结果

Expected Result

+2

我删除了不兼容的数据库标签。请仅使用您正在使用的数据库进行标记。 –

+0

为什么你不能添加'和DETERMINATION_ID_FK = 1'? – SqlZim

+0

@GordonLinoff好的谢谢你的更新,给我任何想法,我试过,但我无法找到解决方案 – Developer

回答

2

我认为你正在努力寻找具有所有已知集合的dtrqlfr.determination_id_fk。像这样的东西可以工作:

select 
    DTRQLFR.DETERMINATION_ID_FK 
from IC_DTRMN_QLFR_XREF DTRQLFR 
where 
    (DTRQLFR.QUALIFIER_ID_FK, DTRQLFR.QUALIFIER_OPTION_ID_FK) IN ((1,1), (2,3), (3,6)) 
group by DTRQLFR.DETERMINATION_ID_FK 
having count(*) = 3 -- where 3 is equal to the number of sets 
; 
+0

得到错误 - - ORA-00979:不是GROUP BY表达式 – Developer

+0

您是否将更多列添加到select? http://rextester.com/GSS69787 – SqlZim

+0

是的,我删除了额外的列,现在工作 – Developer