选择多个值时,来自具有相同值的多个表中的列返回错误的数据计数

时间:2019-07-09 19:19:11

标签: sql oracle multiple-columns

SELECT COUNT(*) FROM (
SELECT
    columnA,
    columnB
FROM
    "table" A JOIN "table" B ON a.ID = b.ID
    WHERE a.column in ('value1','value2')
       AND SUBSTR(b.column,7,6) in ('value1','value2')
)

在这里,当我输入一个值时,我得到正确的计数,但是当我输入多个值时,我得到了错误的计数。例如,仅输入值1 可以得到1241行的计数,而仅输入值2 可以得到0的计数。我希望输入两个值并获得两个值的结果之和。但是由于某种奇怪的值组合,我得到的结果超出了要求,而不仅仅是1241行。

我尝试了类似where (a.column,SUBSTR(b.column,7,9)) in ('value1','value2')之类的方法,但没有成功!

2 个答案:

答案 0 :(得分:0)

您尝试吗?

SELECT Sum(COUNT(x.columnA) + Count(x.columnb)) FROM (
SELECT
    columnA,
    columnB
FROM
    "table" A JOIN "table" B ON a.ID = b.ID
    WHERE a.column in ('value1','value2')
       AND SUBSTR(b.column,7,6) in ('value1','value2')
)x

答案 1 :(得分:0)

很难理解您想要从样本中得到什么,但是从我收集到的数据中,您可能会发现列在表A中是“ value1”,在表B中是“ value2”。我认为您需要像这样更改代码:

SELECT COUNT(*) FROM (
SELECT
    columnA,
    columnB
FROM
    "table" A JOIN "table" B 
    ON a.ID = b.ID
      AND SUBSTR(b.column,7,6)=a.column
    WHERE a.column in ('value1','value2')

)