sql - SQL Rows to Dynamics Columns
问题描述
I would like to convert some rows that is being extracted in my sql query into columns. Not all rows are duplicated in the result. So would like to know how can I convert rows to columns and if no specific value in the specific column, I would like to see blank value.
select Dep.ID,
Dep.Department,
L.Logo,
ISNULL(R.Room,'') AS [Room],
from vDepartment Dep
left join vLogos L on L.ID=Dep.ID
left join Room R on R.id=Dep.id
Current Data and expected result:
解决方案
Here's your script. First is to generate dynamic columns, then build sql query string to include your generic columns. And use sql pivot()
declare @cols nvarchar(max);
declare @sql nvarchar(1000);
//generate Room columns
select @cols =
STUFF((select N'],[' + room
from (select distinct Room
from Room ) AS t1
FOR XML PATH('')
), 1, 2, '') + N']';
set @sql = N'select p.ID, p.Department, p.Logo, ' + @cols + N' from
(
select Dep.ID,
Dep.Department,
L.Logo,
ISNULL(R.Room,'') AS [Room],
from vDepartment Dep
left join vLogos L on L.ID=Dep.ID
left join Room R on R.id=Dep.id
) t1
pivot
(
max(t1.Room)
for t1.Room in (' + @cols + N')
) p '
exec sp_executesql @sql;
推荐阅读
- java - 如何根据工资、姓名从地图升序对员工对象进行排序
>>使用 Java8 流 API - c - 如何在 libev 中使用线程
- nusmv - 如何将最后一部分(**一盏灯只能进行 10 次转换**)添加到这个 NUSMV 代码中?
- python - 如何在类中迭代overobject
- laravel - 在 laravel 中使用数据库原始查询
- bash - vint (vim lint) 的解决方法不允许来自标准输入的输入
- android - Android Kotlin 从对象中检索上下文
- javascript - 添加数据后需要刷新Angular组件
- java - 如何在 Logback 和 SLF4J 中使用自定义记录器
- c# - 代码:在我的 html 文件中键入 c# 时,“Request.Cookies”无效