1
A
回答
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]
0
可以使用旋轉功能得到結果,但首先你會想UNPIVOT unchecked
和checked
列。由於您使用的是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 |
相關問題
- 1. 如何將SQL Server 2008 R2數據庫轉換爲SQL Server 2012?
- 2. 如何將十進制轉換爲科學SQL Server 2008 R2中
- 3. 如何在sql server 2008中將行值轉換爲列?
- 4. SQL Server 2008 R2中,轉換列行和列的列
- 5. 爲SQL Server 2008 R2轉換函數PERCENTILE_CONT
- 6. SQL Server 2008 R2 - 如何將多點轉換爲線?
- 7. 在SQL Server 2008 R2中將DD/MM/YYYY轉換爲YYYY-MM-DD
- 8. 在SQL Server 2008 R2中將Varchar轉換爲二進制文件?
- 9. 如何將行值轉換爲SQL Server 2008中的列標題?
- 10. 使用SQL PIVOT行列... SQL Server 2008 R2
- 11. 使用SQL Server 2008 R2將HH:MM:SS.MS轉換爲秒
- 12. 將MySql觸發器轉換爲SQL Server 2008 R2觸發器
- 13. 轉換行到列SQL Server 2008中
- 14. 轉換行到列在SQL Server 2008
- 15. 如何將SQL Server 2008 R2中的3整數轉換爲日期格式?
- 16. 在SQL 2008 Server R2中切換案例
- 17. 如何將SQL Server 2008 R2數據庫還原到SQL Server 2008?
- 18. 將行轉換爲SQL Server 2008中的列
- 19. SQL Server將列轉換爲行
- 20. 如何將SQL Server 2008 .mdf文件轉換爲SQL Server 2012?
- 21. 將列轉換爲SQL Server中的行
- 22. 在SQL Server 2008 R2中壓縮XML列
- 23. SQL Server 2008 R2 Express行號
- 24. 如何轉換行到列單選擇查詢的SQL Server 2008 R2
- 25. 將行轉換爲列SQL Server,T-SQL
- 26. 的connectionString爲SQL Server 2008 R2
- 27. 在SQL Server 2008 R2中計數行
- 28. 如何在SQL Server 2008中將int轉換爲日期
- 29. 如何將varchar(4)轉換爲在SQL Server 2008中浮動?
- 30. 如何在SQL Server 2008中將datetimeoffset轉換爲datetime?