sql - SQL:当 0 时过滤结果,但当列 X 不为空时除外
问题描述
可能遗漏了一些非常明显的东西,但我正在尝试在 GBQ 中过滤我的查询结果。在下面的示例中,我想过滤掉invamt
为空的结果。但是,我想保留invamt
为 0 但order amt
不是 0的任何结果
DATA
csr | inv amt| order amt |
-----------------------------
bob | 12,00 | 0 |
bil | 0 | 0 |
art | 0 | 0 |
tia | 0 | 12 |
OUTPUT
csr | inv amt| order amt |
-----------------------------
bob | 12,00 | 0 |
tia | 0 | 12 |
我已经尝试过
where invamt <> 0 and not (invamt = 0 and orderamt > 0)
,但似乎没有给我正确的结果。有任何想法吗?
编辑:道歉——交替使用 NULL 和 0 结果。绝对不是一回事
解决方案
根据您的样本数据,您似乎只是想要:
where invamt <> 0 or orderamt <> 0
根据您的问题:
我想过滤掉 invamt 为空的结果。但是,我想保留 invamt 为空但 order amt 不为空的任何结果
你似乎想要:
where invamt is not null or orderamt is not null
如果NULL
s 和0
都是可能的,那么这就足够了:
where invamt <> 0 or orderamt <> 0
这保证了其中一列具有非NULL
-、非-0
值。
推荐阅读
- python - 如何在标记 Keras 时忽略字符
- groovy - 使用 WDS 在 Jmeter 中未正确显示绝对路径
- angular - Angular 6 指令:获取对主机组件实例的引用
- python - 如何打开文件并将项目附加到 Python 中的现有列表
- javascript - 内容隐藏/显示设计调整
- react-native - 在你听说 React Native Architecture 改变和 Airbnb,Udacity 放弃它之后,你采取了哪些行动?
- next.js - Next.js 应用程序需要 33 秒才能加载。是什么让它这么慢?
- python - 如何将字符串转换为 numpy 数组?如 [(160, 179), (243, 179), (203, 227), (166, 269), (236, 269)]
- matlab - 通过批处理文件同时运行多个 MATLAB 实例
- c# - 有没有办法防止多个设备同时访问 Google Drive appDataFolder?