2017-08-02 9 views
0

x軸(および各月の値)のタイムラインを含むExcelファイルを、MS SQL Serverで以下の形式に変換する最も良い方法は何ですか?MS SQL Serverのタイムラインを使用したExcelファイルの変換

など。 Excelファイルは、以下の形式があります:形質転換後 enter image description here

をMS SQL Serverのテーブルには、次のようになります。 enter image description here

MS SQL Serverでこれを行うための最も効率的な方法は何ですか?

+0

あなたは 'UNPIVOT'を使用します。 Excelをそのまま現用のテーブルにアップロードし、必要なSQLテーブルに「UNPIVOT」を追加します。 –

+0

ありがとうございます。上記の例では、SQL文はどのように見えますか? – ShortDive

+0

最も効率的な方法はおそらくExcelを使用することです。 SQL Serverの要件はどこから発生していますか? –

答えて

1

これは、アンピボット使用して行うことができ、次の手順を試してください:

SELECT [name], [Description],Months, Mon 
FROM 
(
    SELECT [name], [Description], [Jan], [Feb],[mar],[Apr],[May],[June],[July] 
    FROM yourtable 
) AS n 
UNPIVOT 
(
    Mon FOR Months IN ([Jan], [Feb],[mar],[Apr],[May],[June],[July]) 
) AS up; 

私の完全なスクリプトは、テストのために以下の通りです:

create table #temp 
(
    [name] varchar(255), 
    [Description] varchar(255), 
    [Jan] int, 
    [Feb] int, 
    [Mar] int, 
    [Apr] int, 
    [May] int, 
    [June] int, 
    [July] int 
) 

insert into #temp 
values('Name1','Description1',4,6,8,8,4,5,7) 
,('Name2','Description2',9,7,7,5,8,1,8) 
,('Name3','Description3',1,10,1,4,6,4,3) 
,('Name4','Description4',6,7,1,7,3,2,1) 
,('Name5','Description5',3,9,8,6,6,5,7) 
,('Name6','Description6',10,2,5,9,10,8,10) 
,('Name7','Description7',10,8,5,7,10,7,8) 


SELECT [name], [Description],Months, Mon 
FROM 
(
    SELECT [name], [Description], [Jan], [Feb],[mar],[Apr],[May],[June],[July] 
    FROM #temp 
) AS n 
UNPIVOT 
(
    Mon FOR Months IN ([Jan], [Feb],[mar],[Apr],[May],[June],[July]) 
) AS up; 


drop table #temp 
+0

ありがとうございます。 – ShortDive

関連する問題