2017-02-10 9 views
0

私はレコードの1行になるピボットクエリを持っています。その1行のレコードをさらにフィルタリングする必要があります。レコードの1行に時間ベースの列があるので、毎時24列あります。唯一SQLでは、0の値を持たない列を選択する方法は?

値た列を選択する方法

たちは5列
Col1 Col2  Col3 Col4 Col5 
100  0   0  20  0 

のCol1、COL4が対象です

を考えてみましょう。私はこれらの2つの列の合計が必要です。

Col1 Col4  Total 
100 20   120 



create table #t 
(
Col0 int, 
Col1 int, 
Col2 int, 
Col3 int, 
Col4 int, 
Col5 int, 
Col6 int, 
Col7 int, 
Col8 int, 
Col9 int, 
Col10 int, 
Col11 int 

) 



insert into #t values 
(0,100,0,0,0,0,20,10,0,0,0,0) 

select * from #t 
-- Expected Result 

select Col1, Col6, Col7 from #t 
+0

質問を投稿してもう一度説明してください。 – GurV

+0

NULL値をフィルタリングするピリオドなしクエリでWHERE条件が必要になると思っていますが、より具体的な回答を得る前にクエリを確認する必要があります。 –

+0

あなたも助けてもらうためにクエリを投稿するべきです –

答えて

1

静的なピボットテーブルを使用してダイナミックに行うことはできません。ピボット・テーブルが定義されているときは、すべての値がNULLであるかどうかが分からず、データがパイプされている時間が足りない場合は分かりません。空の列グループの省略をサポートするレポートプロジェクトを作成するか、より動的なクエリの代替案を探すことができます。

+0

ありがとうございます。空の列の省略をサポートするレポート作成プロジェクトを作成するとどういう意味ですか? – goofyui

+0

たとえば、SSRSでは、idフィールドに列グループを作成し、SUM()<> 0の列グループにフィルタを配置することで問題は解決します。しかし、これはあなたの質問に答えるものではありません。 SSMSでこれを行うには、動的SQLを生成する必要があります。 –

+0

基本的にこの時点では何もしません。値と値を持たない列をフィルタリングできません。 – goofyui

関連する問題