2

我想知道在 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

在此先感谢,我真的不知道该怎么做。

4

3 回答 3

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

SQL Fiddle with Demo

或者您可以使用 aUNION 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

SQL Fiddle with Demo

于 2012-09-21T16:07:54.857 回答
0

如果没有列连接,我看不出你是如何做到的:

Table1:
ID
ColumnName

Table2:
Table1ID
Letter


Select table1.id, table2.Letter 
from table1 
inner join table2 on table1.ID = table2.Table1ID
于 2012-09-21T16:05:13.473 回答
0

您可以使用 case 语句和交叉连接来做到这一点:

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
于 2012-09-21T16:09:29.247 回答