我需要能夠對包含數據的列進行計數,但不確定從哪裏開始。該表格是:計數包含數據的列
TargetID Jan Feb Mar Apr May Months with data
1 33 Null 44 32 Null 3
2 Null 44 32 16 17 4
3 33 72 Null Null 14 3
我只是不知道如何創建與數據月份列,並將不勝感激任何幫助。 感謝
我需要能夠對包含數據的列進行計數,但不確定從哪裏開始。該表格是:計數包含數據的列
TargetID Jan Feb Mar Apr May Months with data
1 33 Null 44 32 Null 3
2 Null 44 32 16 17 4
3 33 72 Null Null 14 3
我只是不知道如何創建與數據月份列,並將不勝感激任何幫助。 感謝
的一般方法在SQL做到這一點是使用CASE
聲明:
select t.*,
((case when jan is not null then 1 else 0 end) +
(case when feb is not null then 1 else 0 end) +
(case when mar is not null then 1 else 0 end) +
(case when apr is not null then 1 else 0 end) +
(case when may is not null then 1 else 0 end)
) as MonthsWithData
from t;
這是標準的SQL,應在任何合理的數據庫。
注意:您的數據結構看起來很尷尬。一般來說,您希望每個目標和每個月都有一行,並且包含計數的單個列。非規範化的數據有時候非常有用,特別是對於最終用戶的報告,但通常情況下,最好將事物存儲爲「SQL」方式。
打算補充我的答案 - 但正如Gordons所說。我會創建一個包含三個字段的表格 - TargetID,MonthName和MonthValue。 TargetID和MonthName將是一個複合主鍵,因此不能有多個同一個TargetID相同的月份。然後SQL將是'SELECT TargetID,COUNT(MonthValue)FROM Table3 GROUP BY TargetID'或甚至'SELECT TargetID,COUNT(MonthName)FROM Table3 WHERE NOT MonthValue IS NULL GROUP BY TargetID' –
您正在使用哪種SQL?我猜在Access? –