2016-03-29 5 views
-1

テストデータSQL Serverを使用して行データを追加する方法は?

Name count    percentage   location 
ABC  2     100.00%    india 
ABC  1     90.00%     us 
ABC  4     50.00%     null 
ABC  3     100.00%     uk 

私はインドの場所に位置ナルレコードの数を追加し、nullレコードを削除する必要がしたいですか? 位置がヌルである3番目の行を意味し、次にインディアンカウント(2 + 4 = 6)でカウント(4)を追加する必要があります。 SQLを使用してこの結果を達成する方法をお勧めしますか?解決策以下

+0

テーブルとして希望の出力を含めることはできますか?パーセンテージを変更して追加しますか? –

+0

ここから始めましょう。 http://spaghettidba.com/2015/04/24/how-to-post-a-t-sql-question-on-a-public-forum/ –

+0

私は上記の結果が変更されたクエリを生成すると思います。投稿することができます –

答えて

1

最大割合

(select name,count,percentage,location 
    from testdate 
    where location is not null and location<>'india' 
) 
union all 
(select name,sum(count),max(percentage),max(location) 
    from testdate 
    where location='india' or location is null 
    group by name 
) 
1

は現在、それだけでNULLを変更するCASEを使用NULLIndia

+1

合流を使って素敵なトリック – TheGameiswar

1

のうち、MAX percentageがかかります。この

select name,sum(count),max(percentage),coalesce(location,'India') 
from Yourtable 
group by name,coalesce(location,'India') 

のようなものを試してみてくださいとりますINDIAに、次にGROUP BY

CASEを置き換えることができます:COUNT

SQL Fiddle Demo

SELECT "Name", SUM("count"), MAX("percentage"), "location" 
FROM (
    SELECT "Name", 
      "count", 
      CASE WHEN "location" IS NULL THEN '' 
       ELSE "percentage" 
      END as "percentage", 
      CASE WHEN "location" IS NULL or "location" = 'india' THEN 'india' 
       ELSE "location" 
      END as "location" 
    FROM Table1 
    ) T 
GROUP BY "location", "Name"; 

OUTPUT

| Name | sum |  max | location | 
|------|-----|---------|----------| 
| ABC | 1 | 90.00% |  us | 
| ABC | 6 | 100.00% | india | 
| ABC | 3 | 100.00% |  uk | 

EDITを追加しますby

COALESCE("location", 'india') as "location" 
関連する問題