Q
条件选择语句
2
A
回答
5
没有看中这里,算了算,每列非空数:
SELECT *
FROM Table1
WHERE
IIF(VAL IS NULL, 0, 1) +
IIF(EQ IS NULL, 0, 1) +
IIF(EFF IS NULL, 0, 1) +
IIF(SIZE IS NULL, 0, 1) +
IIF(FSCR IS NULL, 0, 1) +
IIF(MSCR IS NULL, 0, 1) +
IIF(SY IS NULL, 0, 1) >= 4
只注意到你标记的SQL服务器2005。 IIF
是sql server 2012,但您可以替代CASE WHEN VAL IS NULL THEN 1 ELSE 0 END
。
+0
+1我现在知道'IIF'和'CASE'方法正是我如何做到的。 :) – Khan
1
由于值是数字或NULL
你可以使用这个ISNUMERIC()
:
SELECT *
FROM YourTable
WHERE ISNUMERIC(VAL)+ISNUMERIC(EQ)+ISNUMERIC(EFF)+ISNUMERIC(SIZE)
+ISNUMERIC(FSCR)+ISNUMERIC(MSCR)+ISNUMERIC(SY) >= 4
2
这个怎么样?打开你的列到“行”,并使用SQL来算不空:
select *
from Table1 as t
where
(
select count(*) from (values
(t.VAL), (t.EQ), (t.EFF), (t.SIZE), (t.FSCR), (t.MSCR), (t.SY)
) as a(val) where a.val is not null
) >= 4
我喜欢这个解决方案,因为它是分裂的数据,从数据处理 - 你得到这个派生出来的“表值”后,你可以做anithing到它,并且很容易在将来改变逻辑。你可以总结,计算,做任何你想要的聚合。如果它是像case when t.VAL then ... end + ...,
这样的东西,那么你必须多次更改逻辑。
例如,假设您希望总和大于2的所有非空元素。在此解决方案中,您只需将count
更改为sum
,然后添加where
子句即可。如果是iif(Val is null, 0, 1) +
,首先必须考虑应该对此做些什么,然后将每项更改为例如case when Val > 2 then Val else 0 end
。
相关问题
- 1. 与条件语句选择
- 2. 条件选择语句
- 3. MySQL条件选择语句?
- 4. SQL条件选择语句
- 5. 选择多个条件的语句
- 6. Oracle在IF条件下选择语句
- 7. 选择由IF-THEN-ELSE条件语句
- 8. 编写条件选择语句
- 9. 条件选择在SQL语句
- 10. 有条件地Linq新语句选择
- 11. T-SQL条件选择语句
- 12. 选择具有多个条件条件的语句
- 13. SQL语句选择语句
- 14. 选择语句
- 15. 选择SQL语句...错误与条款
- 16. MySQL更新和选择一条语句
- 17. ID选择,选择语句
- 18. jQuery在条件语句中选择的选项
- 19. 条件语句
- 20. 条件语句
- 21. 条件语句
- 22. 条件语句
- 23. SQL选择语句
- 24. sql语句选择
- 25. SQLite选择语句
- 26. jsp选择语句
- 27. SQL选择语句
- 28. 选择SQL语句
- 29. SQL选择语句。
- 30. PDO选择语句
这不是太困难,但是,你有没有尝试过自己的东西? –
那么,我试图调制一些逻辑,但我不知道如何将它们翻译成查询语言:也许检查is.na()为每个单元格,总结行,并检查总和是否大于但我不确定如何将其作为查询编写。 – Mayou