首页 > 解决方案 > 将重复的行数据导入派生列

问题描述

我有一个 Excel 表,我们在其中重复运行样本,我想将重复运行的结果导入派生列,这样我的目标表中每个样本只有一行。

数据可能如下所示:

ID 结果 意思是
氨基酸 145 146
氨基酸 147 146

我希望目的地看起来像这样

ID 结果1 结果2 意思是
氨基酸 145 147 146

关于如何解决这个问题的任何想法?

标签: sqlexcelssisduplicatesetl

解决方案


您可以使用如下所示的中间 SQL 表:

  1. 将数据从 Excel 文件获取到中间表的第一个数据流:

在此处输入图像描述

第二个数据流到 PIVOT 重复行:

在此处输入图像描述

这是您的 PIVOT 查询:

CREATE TABLE StagingTable ([ID] varchar(20), Result float, Mean float)
INSERT INTO StagingTable ([ID] , Result , Mean ) VALUES ('Aa',145,146)
,('Aa',147,146)
WITH CTE AS
(
SELECT *,ROW_NUMBER() OVER(PARTITION BY [ID] ORDER BY [ID]) AS Rn FROM StagingTable
)
select 
    ID,
    MAX(case when RN = 1 then Result end) Result1,
    MAX(case when RN = 2 then Result end) Result2,
    Mean
from CTE
GROUP BY ID,Mean
身份证 | 结果1 | 结果2 | 意思是
:- | ------: | ------: | ---:
啊 | 145 | 147 | 146

db<>在这里摆弄


推荐阅读