2013-12-08 97 views

回答

3

您正在轉向兩列(department, [check/uncheck])。據我所知,這意味着你不能使用SQL Server的pivot語法。

一種方法是在子查詢中「untivot」(又名「正常化」)checked。然後,您可以「透視」(又名「非規範化」)的tools在外部查詢列:

select department 
,  [Check/Uncheck] 
,  sum(case when tools = 'engine' then nr else 0 end) as engine 
,  sum(case when tools = 'oils' then nr else 0 end) as oils 
,  sum(case when tools = 'grease' then nr else 0 end) as grease 
,  sum(case when tools = 'sounds' then nr else 0 end) as sounds 
,  sum(case when tools = 'wapers' then nr else 0 end) as wapers 
from (
     select department 
     ,  tools 
     ,  'Checked' as [Check/Uncheck] 
     ,  checked as nr 
     from dbo.YourTable 
     union all 
     select department 
     ,  tools 
     ,  'Unchecked' 
     ,  unchecked 
     from dbo.YourTable 
     ) as SubQueryAlias 
group by 
     Department 
,  [Check/Uncheck] 
order by 
     Department 
,  [Check/Uncheck] 

Live example at SQL Fiddle.

0

可以使用旋轉功能得到結果,但首先你會想UNPIVOT uncheckedchecked列。由於您使用的是SQL Server 2008r2,因此您可以使用CROSS APPLY將UNPIVOT列分爲多行。

爲CROSS的基本語法APPLY將是:

select department, tools, 
    [check/uncheck], 
    value 
from yourtable 
cross apply 
(
    values 
    ('checked', checked), 
    ('unchecked', unchecked) 
) c([check/uncheck], value); 

Demo,這得到您的數據轉換成格式:

| DEPARTMENT | TOOLS | CHECK/UNCHECK | VALUE | 
|------------|--------|---------------|-------| 
| Maintain | engine |  checked |  0 | 
| Maintain | engine |  unchecked |  0 | 
| Maintain | oils |  checked |  0 | 
| Maintain | oils |  unchecked |  2 | 

一旦數據已被轉換成這種格式,那麼你可以使用PIVOT功能將您的tools變成列:

select department, 
    [check/uncheck], 
    engine, oils, grease, sounds, wapers 
from 
(
    select department, tools, 
    [check/uncheck], 
    value 
    from yourtable 
    cross apply 
    (
    values 
     ('checked', checked), 
     ('unchecked', unchecked) 
) c([check/uncheck], value) 
) d 
pivot 
(
    sum(value) 
    for tools in (engine, oils, grease, sounds, wapers) 
) piv 
order by department; 

SQL Fiddle with Demo。這將給出結果:

| DEPARTMENT | CHECK/UNCHECK | ENGINE | OILS | GREASE | SOUNDS | WAPERS | 
|------------|---------------|--------|------|--------|--------|--------| 
| Maintain |  checked |  0 | 0 |  5 |  0 |  0 | 
| Maintain |  unchecked |  0 | 2 |  1 |  0 |  0 | 
| Operations |  checked |  1 | 2 |  1 |  5 |  0 | 
| Operations |  unchecked |  0 | 1 |  2 |  1 |  2 | 
相關問題