1

私は SQL Server 2008 を使用しています。次のように、Table1 と Table2 の 2 つのテーブルがあります。

表1

ID  Col1  Col2  Col3
--  ----  ----  ----
 1     X     Y     Z

表2

ID  Col1  Col2  Col3
--  ----  ----  ----
 1     1     2     3

以下のような結果を返すために、ストアドプロシージャを書きたいと思います。そして、カーソルを使用せずにこの結果を達成する必要があります。

結果

Key  Value  
---  -----
  X      1
  Y      2  
  Z      3
編集済み: 
1 つの結果セットが必要でした。
両方の ID はストア プロシージャのパラメーターです。
4

2 に答える 2

5

SQL Server 2008 を使用しているため、CROSS APPLY と VALUES を使用してデータのピボットを解除できます。最初に id 列で 2 つのテーブルを結合してから、それをkey/value列にピボット解除できます。

select [key], value
from
(
  select t1.col1, t2.col1 t2_col1, 
    t1.col2, t2.col2 t2_col2, 
    t1.col3, t2.col3 t2_col3
  from table1 t1
  inner join table2 t2
    on t1.id = t2.id
) src
cross apply
(
  values
  (col1, t2_col1),
  (col2, t2_col2),
  (col3, t2_col3)
) c ([key], value);

デモで SQL Fiddle を参照してください

于 2013-06-19T13:16:21.393 に答える
1
select  t1.col1 as [Key]
,       t2.col1 as Value
from    dbo.Table1 t1
join    dbo.Table2 t2
on      t1.id = t2.id
union all
select  t1.col2
,       t2.col2
from    dbo.Table1 t1
join    dbo.Table2 t2
on      t1.id = t2.id
union all
select  t1.col3
,       t2.col3
from    dbo.Table1 t1
join    dbo.Table2 t2
on      t1.id = t2.id
于 2013-06-19T13:09:17.427 に答える