如何創建一個新列,以返回表中每行內不同值的數量?例如,統計每行不同值的數量(SQL)
ID Description Pay1 Pay2 Pay3 #UniquePays
1 asdf1 10 20 10 2
2 asdf2 0 10 20 3
3 asdf3 100 100 100 1
4 asdf4 0 10 3
該查詢可能會返回> 100萬行,因此它需要有點高效。總共有8個「支付」列,它們可以是NULL或整數。還要注意,'0'應該被計數與NULL不同。
我已經能夠迄今完成的最(我才意識到是不是甚至精確)計數每行中收費項目總數:
nvl(length(length(Pay1)),0)
+nvl(length(length(Pay2)),0)
+nvl(length(length(Pay3)),0) "NumPays"
典型的行只填充8列中的4個,其餘爲空,支付列中的最大整數是'999'(因此長度 - 長度轉換嘗試..)
我的SQL技能是原始的,但任何幫助表示!
是您的電流輸出,做一個支點查詢的結果呢?如果是這樣,從基礎數據開始將更容易。否則,它看起來像你可能有非規範化的數據。 –
你的桌子設計不好。你不應該有8列的薪酬,你應該爲每個薪酬插入一行。 –
兩個NULL是否被認爲是「相同的」? – mathguy