【问题标题】:Query multiple columns with single statement用单个语句查询多列
【发布时间】:2017-03-08 04:47:55
【问题描述】:

我有一个表,其中包含一个旋转代码值、Code1、Code2 等,直到 Code100。 我有一组值(1,2,3,4,5,6),我需要将每个代码与之进行比较。是否可以在不必写出大量案例语句的情况下扫描一组列以获取特定值?

CASE WHEN Code1 IN (1,2,3,4,5,6) THEN 'yes'
     WHEN Code2 IN (1,2,3,4,5,6) THEN 'yes'
     WHEN Code3 IN (1,2,3,4,5,6) THEN 'yes'
     etc

【问题讨论】:

  • 您可以动态构建查询。
  • 嗯,取决于数据集,您可以取消透视它并检查一次。您可以使用游标,但可能会遇到一些性能缺陷,但与这个庞大的案例语句相比,可能不使用 FAST FORWARD
  • 500 万条记录,所以宁愿不取消透视

标签: sql sql-server tsql case


【解决方案1】:

你可以pivot the table first

然后处理每条记录,在另一个选择中通过将这些列变成一行。

如果做得好,这将只需要一个语句。

CASE WHEN 值在 (1,2,3,4,5,6) THEN 'yes'

:已更新

你也可以试试a lookup table and a JOIN。如果你的所有支点都用完了。

【讨论】:

  • 表格是旋转的。 UnPivoting 就是你的意思,我不愿意这样做,因为我已经有 500 万条记录
猜你喜欢
  • 2012-06-27
  • 1970-01-01
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 2016-01-04
  • 2013-03-01
  • 2014-09-22
相关资源
最近更新 更多