2015-05-21 47 views
1

讓我先就表(有幾十列和幾十值Code下,在現實中)T-SQL:行到列隨着伯爵

Code | Pat | Col1 | Col2 | Col3 
--------------------------------- 
ABC | 001 |  | XX | Q1 
ABC | 002 | xx | xx | Q1 
ABC | 003 | xx | xxx | Q1 
DEF | 004 | xx | xx | Q1 
DEF | 005 | xx | xx | Q1 
DEF | 006 | xx | xxx | Q1 

結果表需要像

ABC | DEF 
--------- 
2 | 3 
3 | 3 

讓我試着解釋一下。對於每個'Code'列,我需要計算Col1ColX中單元格不爲空/空的條目數。

所以上面的例子中,代碼ABC有2 Col1計數和3 Col2計數同樣,對於DEF,都具有3

我試過很多東西計數,但到了點我現在正在看一個空白頁面!

或者

Code | Col1 | Col2 
-------------------- 
ABC | 2 | 3 
DEF | 3 | 3 

請告知

+0

你知道所有的代碼條目時你寫查詢? – flo

+0

總共有81個,它可能會上升或下降 – pee2pee

+0

http://stackoverflow.com/questions/13415540/sql-server-pivot-table-with-counts-and-sums – artm

回答

0

的替代解決方案可以通過使用GROUP BY和總結了計算的數量達到:

SELECT 
    [Code], 
    SUM(CASE WHEN ISNULL(Col1, '') = '' THEN 0 ELSE 1 END) as [Col1], 
    SUM(CASE WHEN ISNULL(Col2, '') = '' THEN 0 ELSE 1 END) as [Col2], 
    ... 
FROM T 
GROUP by [Code] 
+0

對不起,忘記標記我們在2008 R2,所以這不起作用 – pee2pee

+0

從'IIF'移動到'CASE' – flo