【问题标题】:Columns from multiple table with same value returning wrong count of data when selecting multiple values选择多个值时,具有相同值的多个表中的列返回错误的数据计数
【发布时间】:2019-07-09 19:19:11
【问题描述】:
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')
)

在这里,当我输入一个值时,我得到了正确的计数,但是当我输入多个值时,我得到了错误的计数。例如,仅输入 value 1 会得到 1241 行的计数,而仅输入 value 2 会得到 0 的计数。我希望输入这两个值并获得两个值的结果之和。但不知何故,由于值的奇怪组合,我得到的结果比需要的多,而不仅仅是 1241 行。

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

【问题讨论】:

  • 我怀疑这是有效的语法
  • 没有'=',因此它没有将任何列与元组@scaisEdge 进行比较。我已经谈到了预期的结果以及我想用上面的代码做什么
  • 这是一个有效的语法,如果我只将一个值传递给值列表@dneoth,它就可以完美地工作

标签: sql oracle multiple-columns


【解决方案1】:

很难理解您希望从示例中得到什么,但据我收集的信息,您可能在表 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')

)

【讨论】:

  • 在这个问题上已经摸不着头脑了几个小时。我不知道我们可以有两个条件来加入表。这样一个简单而优雅的解决方案。非常感谢!
  • WHERE 过滤加入的结果,ON 指示加入。没有两个条件,只有一个,用 AND 运算符组合两个过滤器。
【解决方案2】:

你试过了吗?

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

【讨论】:

  • 刚试过。出现错误:ORA-00978: 没有 GROUP BY 00978 的嵌套组函数。00000 - “没有 GROUP BY 的嵌套组函数”
  • 然后尝试添加:)x GROUP BY COUNT(x.columnA), COUNT(x.columnb)
猜你喜欢
  • 2014-01-17
  • 1970-01-01
  • 2021-12-03
  • 2019-02-10
  • 2022-08-17
  • 1970-01-01
  • 2011-12-24
  • 2015-03-30
  • 1970-01-01
相关资源
最近更新 更多