2012-02-22 14 views
3

StackOverflowとgoogleをかなりの時間検索しましたが、SQLを使用して私の希望するソリューションに遠く離れた場所でも答えを見つけることができませんでした。私はCSVファイル(1つのテーブル)があり、それは多数のユーザーのためのデータを持っています。問題は、各ユーザーが、複数のスコアを持ち、同じUserIDを持つ複数の行を持つことです。これらのスコアをそれぞれの列に移動して、ユーザーのすべてのデータを1つの行に表示したいと思います。 SQLを使用してこれをどのように達成できますか?現在のレイアウトの複数の行データを独自の列に移動する

例:

UserID FNm  LNm Measure Score 
0001 person one LNF  26 
0001 person one NFS  74 
0001 person one CFS  54 
0002 person two LNF  35 
0002 person two NFS  43 
0002 person two CFS  33 

理想のソリューション:

UserID FNm  LNm LNF NFS CFS 
0001 person one 26 74 54 
0002 person two 35 43 33 

答えて

5

まず、いくつかの一時表にあるように、すべてのレコードを挿入します。 第2に、必要なテーブルに結合データを挿入します。選択部分は約:

select UserID, FNm, LNm, 
    max(case when Measure='LNF' then Score else 0 end) as LNF, 
    max(case when Measure='NFS' then Score else 0 end) as NFS, 
    max(case when Measure='CFS' then Score else 0 end) as CFS 
from temptable 
group by UserID, FNm, LNm 
+0

が魅力のように働いた値を合計するアルヴォのアプローチ@使用することができます。 私はSSISを使用することをお勧め、ここであなたを助けるために記事があります。 – swagger937

0

まず、ExcelスプレッドシートをSQL Serverに読み込む必要があります。

http://www.techrepublic.com/blog/datacenter/how-to-import-an-excel-file-into-sql-server-2005-using-integration-services/205

は、あなたが、おかげで

+1

ExcelとSSISを使わずにCSVファイルを非常に簡単に挿入できるので、これは私にとっては過度のものです。 –

+0

確かに、それはできます、私はむしろSSISそれは私がそれを提案した理由です – Diego

関連する問題