我正在嘗試計算一行中正確的列數。例如:
| 指數 | 上色 1 | 上色 2 | 上色 3 | # 真的 |
|---|---|---|---|---|
| 1 | 真的 | 錯誤的 | 真的 | 2 |
| 2 | 錯誤的 | 錯誤的 | 錯誤的 | 0 |
| 3 | 真的 | 真的 | 真的 | 3 |
我知道我可以使用帶有帕斯卡三角形條件數的 case 陳述句來解決這個問題,但是有沒有更簡單或更可擴展的方法來做到這一點?
uj5u.com熱心網友回復:

uj5u.com熱心網友回復:
塞繆爾回答的案例CASE WHEN [COL 1]=1 THEN 1 ELSE 0 END可以用IFF代替 IFF("COL 1",1,0)
因此
SELECT
*,
IFF("COL 1",1,0) IFF("COL 2",1,0) IFF("COL 3",1,0) AS "# TRUE"
FROM table
您可以遍歷存盤程序中的列,或使用 python/javascript/etc 中的客戶端腳本來構建 SQL。
uj5u.com熱心網友回復:
我不相信有一種方法可以自動遍歷 SQL 中的列(以一種“SUM 列 1-5”的方式),所以我相信你必須明確地命名每一列。
您可以通過執行以下操作來創建上面的計算列
SELECT *,
(
CASE WHEN [COL 1]=1 THEN 1 ELSE 0 END
CASE WHEN [COL 2]=1 THEN 1 ELSE 0 END
CASE WHEN [COL 3]=1 THEN 1 ELSE 0 END
) AS "# TRUE"
FROM [...]
uj5u.com熱心網友回復:
如果您有很多非空列,這可能會更方便。
select regexp_count(concat(col1,col2,col3),'true', 1, 'i') -- i is a case insensitive flag
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/406876.html
標籤:
下一篇:Symfony關系驗證
