中1へ2行をマージ:私は私のクエリで次の行を持っているSQL Serverの
私は以下のように提示される1行にこれらの行をマージしたい:
私のテーブルはこのように多くの行を保持していますので、ダイナミックなソリューションは高く評価されます。さらに、Number 1またはNumber 2列にNULL値を持つ行がいくつかあります。
おかげで...
中1へ2行をマージ:私は私のクエリで次の行を持っているSQL Serverの
私は以下のように提示される1行にこれらの行をマージしたい:
私のテーブルはこのように多くの行を保持していますので、ダイナミックなソリューションは高く評価されます。さらに、Number 1またはNumber 2列にNULL値を持つ行がいくつかあります。
おかげで...
一つの方法は、集計関数を使用しています。
select category, category_2,
max(number_1) as number_1, max(number_2) as number_2
from t
group by category, category_2;
それが複数の行を返さないように、あなたはまた、基になるクエリを解決できる可能性があります。それが興味のあるものなら、もう1つ質問と質問してください。
キーは何によって、あなたが行うことができます(のはCategory
を想定してみましょう)グループ:一緒にキーを形成
select Category, max(Category2) as Category2, max(number1) as number1, max(number2) as number2
from table
group by Category
Category
場合とCategory2
、あなたが書くことができる:
select Category, Category2, max(number1) as number1, max(number2) as number2
from table
group by Category, Category2
ステファンありがとう、あなたの答えは両方ともトリックでした... – user2007221
これは動作するはずです。これは、これは私がクライアントのクエリから得た情報であるため、QUERY
DECLARE @MERGE TABLE (Category VARCHAR(10), Category_2 VARCHAR(10),
Number_1 INT, Number_2 INT)
INSERT INTO @MERGE VALUES
('A', 'B', NULL,1),
('A', 'B', 5,NULL)
SELECT
A.Category
,A.Category_2
,MAX(A.Number_1) AS Number_1
,MAX(B.Number_2) AS Number_2
FROM @MERGE A INNER JOIN @MERGE B
ON A.Category=B.Category
WHERE B.Number_2 IS NOT NULL
AND B.Number_2 IS NOT NULL
GROUP BY A.Category ,A.Category_2
複数の行を返すOUTPUT
Category Category_2 Number_1 Number_2
A B 5 1
問題は感謝ゴードン、私は基本的なクエリを修正することはできません対処します。 – user2007221