2016-05-23 14 views
2

SQL 2008 R2を使用しています。SQLでテキストを集計またはグループ化する方法

Class Name1 Quantity1 Name2 Quantity2 Name3 Quantity3 
AAA Jane  6   Jim  12  Hons  2 

を教えてください:私はそのような結果になるよう

Class Name1 Quantity1 Name2 Quantity2 Name3 Quantity3 
AAA Jane  6   ''  ''  ''  '' 
AAA  ''  ''  Jim  12  ''  '' 
AAA  ''  ''  ''  ''  Hons  2 

はどうやってデータを選択することができます:

は、ここに私のサンプルです。

ありがとうございました。

答えて

1

あなたはMAXを使用することができます。以下、その後、

SELECT [Class], 
     MAX(Name1) as Name1, 
     MAX(Quantity1) as Quantity1, 
     MAX(Name2) as Name2, 
     MAX(Quantity2) as Quantity2, 
     MAX(Name3) as Name3, 
     MAX(Quantity3) as Quantity3 
FROM YourTableName 
GROUP BY [Class] 
+0

よろしくお願いします。それは私を1日節約する。 – user3011414

2

は、すべての列がvarchar(または類似の非数値型)であることを仮定して、あなたのサンプルデータ内の空のセルは、実際に空の文字列であることを動作するはずです:ここ

SELECT Class, 
     MAX(CASE WHEN Name1  = '' THEN NULL ELSE Name1 END) AS Name1, 
     MAX(CASE WHEN Quantity1 = '' THEN NULL ELSE Quantity1 END) AS Quantity1, 
     MAX(CASE WHEN Name2  = '' THEN NULL ELSE Name2 END) AS Name2, 
     MAX(CASE WHEN Quantity2 = '' THEN NULL ELSE Quantity2 END) AS Quantity2, 
     MAX(CASE WHEN Name3  = '' THEN NULL ELSE Name3 END) AS Name3, 
     MAX(CASE WHEN Quantity3 = '' THEN NULL ELSE Quantity3 END) AS Quantity3 
FROM yourTable 
GROUP BY Class 

トリックは、SQL Serverのこと​​3210です。ここでは、空のセルを無視して、実際のテキストデータのみを取りたいと考えています。もう1つの前提として、1列あたり1つの実データが1つしかありません(Class)。

NULLの値が実際のデータが存在しない場合は、単に各列にMAX(col)を使用して取り除くことができます。

+0

ええ、ご協力いただきありがとうございます。それは私を1日節約する。 – user3011414

関連する問題