需要帮助在SQL中执行“映射”

时间:2013-10-07 19:17:31

标签: sql sql-server sql-server-2008 etl

我有一个结果集/ RS1,看起来像这样 -

ColName1,ColName2,ColName3,ColName4... 
a,1,e,c...
b,3,r,p...

等...

RS1来自 Server1 。 ColName [X]实际上是ID,Name,Address等实名。

Server2 RS2上还有另一个结果集,它包含这样的列 -

Name,ColumnPosition,ColumnName 
xyz,Col1,NULL
abc,Col4,NULL
asd,Col2,NULL

现在,我想将RS2的每个ColumnPosition映射到RS1中对应的ColumnName。我怎么做 ? SQL是否足够或者我是否需要使用一些ETL工具来轻松准确地做到这一点?

预期结果样本 -

Name,ColumnPosition,ColumnName 
xyz,Col1,ColName1
abc,Col4,ColName4
asd,Col2,ColName2

1 个答案:

答案 0 :(得分:0)

我不确定你想要什么,但是......

CREATE TABLE RS1 (ID INT, [Count] INT, [Amount] INT)

INSERT INTO RS1 VALUES(1,0,2)
INSERT INTO RS1 VALUES(2,3,1)
INSERT INTO RS1 VALUES(3,1,2)

SELECT * FROM RS1

SELECT  t.ID,
  x.ColPos,
  x.ColName,
  x.Value
FROM    RS1 t
CROSS APPLY 
(
    VALUES
        (1, 'Count', t.[Count]),
        (2, 'Amount', t.[Amount])
) x (ColPos, ColName, Value)