我想知道是否存在在SQL-Server 2008中完成以下内容的代码?
表1:
id column name
-------------------
1 col1
2 col2
3 col3
4 col2
表2:
col1 col2 col3
--------------------
a b c
结果表:
id data
--------------------
1 a
2 b
3 c
4 b
先谢谢,我真的不知道该怎么做。
答案 0 :(得分:2)
您可以使用UNPIVOT
table2
来访问列中的数据:
select t1.id, t2.value
from table1 t1
left join
(
select value, col
from table2
unpivot
(
value
for col in (col1, col2, col3)
) u
) t2
on t1.name = t2.col
或者您可以使用UNION ALL
访问table2
中的数据:
select t1.id, t2.value
from table1 t1
left join
(
select col1 value, 'col1' col
from table2
union all
select col2 value, 'col2' col
from table2
union all
select col3 value, 'col3' col
from table2
) t2
on t1.name = t2.col
答案 1 :(得分:0)
如果没有列连接,我不知道你是怎么做到的:
Table1:
ID
ColumnName
Table2:
Table1ID
Letter
Select table1.id, table2.Letter
from table1
inner join table2 on table1.ID = table2.Table1ID
答案 2 :(得分:0)
您可以使用案例陈述和交叉联接:
select t1.id,
(case when t1.columnname = 'col1' then t2.col1
when t1.columnname = 'col2' then t2.col2
when t1.columnname = 'col3' then t2.col3
end) as data
from table1 t1 cross join
table2 t2