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