2016-06-14 12 views
0
ID jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 
13441 37 0 0 0 0 67 0 0 0 0 0 0 
13555 37 0 97 0 0 0 0 0 0 0 0 0 
15103 67 0 97 0 0 0 0 0 0 0 0 0 
16019 37 0 97 0 0 0 0 0 0 37 67 97 
12951 67 0 97 0 0 0 0 0 0 0 0 0 
16351 37 0 37 67 0 0 0 0 0 0 37 67 
13244 37 0 37 67 0 0 0 0 0 0 0 0 
+3

あなたの将来のための計画を持っていることを良いことだが、あなたは何をこれまでに試してみましたが、何を持っています問題は? –

+0

あなたがこれまでに試したことを示してください。 – dasblinkenlight

答えて

4

Hmmm。 。 。これには、データのピボット解除、フィルタリング、および再集計が必要です。これはapplyを使用して非常に簡単であることが判明:

select t.*, c.cnt37 
from t outer apply 
    (select count(*) as cnt37 
     from (values (jan), (feb), (mar), (apr), (may), (jun), (jul), (aug), (sep), (oct), (nov), (dec) 
      ) v(val) 
     where val = 37 
    ) c; 
3

あなたはUNPIVOTを使用することができます。

SELECT ID, COUNT(*) AS cnt 
FROM (
    SELECT * 
    FROM mytable) AS src 
UNPIVOT (col FOR mon IN ([Jan], [Feb], [Mar], [Apr], [May], [Jun], 
         [Jul], [Aug], [Sep], [Oct], [Nov], [Dec])) AS unpvt 
WHERE col = 37 
GROUP BY ID 
+0

あなたはドローに私を打つ:) – gofr1

関連する問題