【发布时间】:2017-01-11 14:17:17
【问题描述】:
我正在尝试如何查找列中是否存在另一个值为 '0'
MSSQL server 2005 表有 40 列和 730 行以及数字数据。
表中数据示例:
date|col1 |col2 |col3 | col4|
1 | 0 | 0 | 0 | 0 |
2 | 45 | 0 | 7 | 0 |
3 | 0 | 0 | 0 | 0 |
4 | 75 | 0 | 0 | 0 |
5 | 0 | 0 | 0 | 0 |
6 | 7 | 0 | 0 | 0 |
7 | 0 | 0 | 7 | 0 |
8 | 0 | 0 | 7 | 0 |
9 | 0 | 0 | 7 | 0 |
结果我需要的是一行布尔值,
其中0表示列中是所有值为'0'的记录
和1 表示在列中至少存在比'0'其他值的一倍
结果可能存储在临时表中。
我需要这样的东西:
| col1 | col2 | col3 | col4 |
| 1 | 0 | 1 | 0 |
我该怎么做?有人可以帮忙吗?
我试过这个查询:
SELECT
CASE
WHEN max(col1) = 0
THEN 0
ELSE 1
END as col1,
CASE
WHEN max(col2) = 0
THEN 0
ELSE 1
END as col2,
CASE
WHEN max(col3) = 0
THEN 0
ELSE 1
END as col3,
CASE
WHEN max(col4) = 0
THEN 0
ELSE 1
END as col4
FROM table
它工作正常,但似乎很复杂。任何人都可以建议 还有什么?
【问题讨论】:
-
这几乎是最简单的方法,并且在性能上会非常好。还有其他方法,但没有一种方法会过于“更好”。不过,您的查询一点也不复杂。
标签: sql-server sql-server-2005