2016-06-01 3 views
-1

との最初ではないNULL値を取得することは、私は私は、次の表</p> <p><a href="https://i.stack.imgur.com/GA9pF.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/GA9pF.png" alt="Source Table"></a></p> <p>続きを持つグループ

Result Set

説明

を達成しようとしていた結果であります私は場所でデータをグループ化し、拳を取得したい列で使用できるNULL値ではありません。例えばの値ブライアンを有するであろう値テイラーとカラムDを有するであろう値ジョン、カラムCを有するであろう値ジョン、カラムBを有するであろう 1300カラムをlocationcd。

マイソリューション

私は正しい結果を保証するものではない何かをしました。ここに私のクエリです

select locationCd, 
min([$1-$500]), 
min([$501-$2500]) as '$501-$2500', 
Min([$2501-$5000]) as '$2501-$5000', 
min([$$5000 and above]) as '$$5000 and above' 
from #tab 
group by LocationCd 

助けてください。

+0

提供してください必要なテーブルでTABLE_NAMEを交換してください有効なデータより良い回答を得るのに役立ちます – mohan111

+0

まずは?今度は、どの列が注文を決定するのかといった疑問がぶつかる戦いがあります。あなたのデータから、単純にすべての列 'not null'でフィルタリングすることができます –

+0

結果はビジネスルールと一致しませんか? –

答えて

0

が必要な結果を与えるだろう...これはあなたのお役に立てば幸いです: -

select ROW_NUMBER() OVER (partition by locationCd order by locationCd) RID,locationCd,A,B,C,D into #t1 from table_name 

select locationcd,min(A) A, 
(select B from #t1 b where b.locationcd=a.locationcd AND b.RID=3) B, 
(select C from #t1 c where c.locationcd=a.locationcd AND c.RID=2) C, 
(select D from #t1 d where d.locationcd=a.locationcd AND d.RID=1) D 
from #t1 a 
group by locationcd 

drop table #t1 

出力: -

locationcd A  B  C  D 
200  David David Detlef Brian 
201  David David Detlef Brian 
400  Walter Brad Detlef Brian 
1200  David David Detlef Brian 
1300  John John Taylor Brian 
1400  Walter Brad Detlef Brian 

0
Select LocationId, MAX(Ty1.A) A 
From #tabl T01 
Outer Apply (Select Top 1 A From #tabl T1 Where T1.LocationId=T01.LocationId And T1.A Is Not Null) Ty1 
Group By LocationId 

これはあなたを助けますか?

0
;with cte as 
(select distinct locid from @t) 
select cte.locid, 
    (select top 1 cola from @t t where t.locid = cte.locid AND t.cola is not null) cola , 
     (select top 1 colb from @t t where t.locid = cte.locid AND t.colb is not null) colb, 
     (select top 1 colc from @t t where t.locid = cte.locid AND t.colc is not null) colc, 
     (select top 1 cold from @t t where t.locid = cte.locid AND t.cold is not null) cold 
from cte 
0

これを試してください。

クエリ以下
select LocationCD,min(A),min(B),min(C),min(D) 
from #tab 
group by LocationCD 
関連する問題

 関連する問題