【问题标题】:How to eliminate rows by using WHERE out of concatenated columns?如何通过使用连接列中的 WHERE 来消除行?
【发布时间】:2018-11-05 20:01:25
【问题描述】:

知道如何使用 WHERE 从连接的列中删除行吗?

这么说:

SELECT company_id||department_id AS "Company Dept" FROM Department

我试图通过以下方式进一步缩小范围:

WHERE company_id||department_id='000159999'

但是,它没有用。想知道从连接列中过滤的任何可能的解决方案(在 Teradata JDBC 中)?

Company_id=00015;部门 ID=9999 请注意,相同职能部门可能在不同公司代码中的不同部门 ID 中。这就是为什么我的理想过滤器不在串联列中的原因。

提前致谢!

【问题讨论】:

  • “没有”工作具体是什么意思?
  • 好吧..有一个错误说“(表名)的格式或数据中有错误字符”。

标签: sql jdbc teradata


【解决方案1】:

为什么要将这些值连接在一起?只需使用:

WHERE company_id = '00015'  and department_id = '9999'

从性能的角度来看,这样更好,因为查询可以利用索引(并且统计信息更准确)。如果值确实是数字,则删除 's 和前导 0s:

WHERE company_id = 15 and department_id = 9999

如果您有多个要查找的值:

WHERE (company_id = 15 and department_id = 9999) or
      (company_id = 14 and department_id = 9998) or
      . . .

【讨论】:

  • 嗨,戈登,感谢您的帮助!我需要更多的部门和更多的公司代码,而不仅仅是 9999 或 15。虽然 9999 是我需要的公司代码 15,但我不需要公司代码 14 或 13 中的 9999。虽然我需要公司代码中的 9998 14,但我不需要公司代码 13 中的 9998 ............等等......所以如果我分别过滤公司代码和部门 ID,结果将包括我不需要的那些行不需要。那有意义吗?感谢您的帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-02
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
相关资源
最近更新 更多