Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

DBからの読み込み Select... Where...

初めまして、QlikView12 を使用しています。初心者です。

データベースの表をロードするところで質問です。

列A の値は 1 または NULL です。行数は300件程度です。

この表の 列A が NULL の行だけを SELECT したいのですが、

where "列A" = NULL

where IsNull("列A") <> 0

where "列A" <> '1'

where "列A" <> 1

などやってみるのですが、望んだ結果になりません。

LOAD した後で選択するのではなく、LOADの時点でNULLだけを

抽出させたいのですが、どのようにすればよいでしょうか?

IsNull("非表示") を列に追加して表示させると

0 または -1 が表示されます。

これは、False と True と言うことだと思います。

よろしくお願いします。

4 Replies
hka
Employee
Employee

データの項目は列Aのみではないですよね。

列Aのみだとデータとして認識しないです。

他の列もあるのであれば、下記where句でいけます。

where not 列A='1'

QV12で確認しました。

もしこれでうまくいかないようであれば、サンプルデータを提供頂けますか。

Not applicable
Author

Hideki Kawahata 様

返信ありがとうございます。

問題の表ですが、列は全部で5つあり、列Aは5番目の列です。

内容は、担当者 のテーブルで、名前や担当者コード、所属コード、部門コードなどが

あり、列Aが5番目にあります。(無効な人が 1 になっているので、これを除きたい)

where not 列A='1' でLOADしてみましたが、0 Lines fetched となり、

1行も抽出されませんでした。(質問投稿時と同じ結果です)

また、該当DBがOracle 11g のため、サンプルをお送りできません。

条件をつけずに全件QlikViewで抽出した結果をExcelに保存し、それをLOADするように

してみたところ

where not 列A='1'

where  列A<>'1'

で、希望通りの結果が得られました。ExcelからCSVを作成して実行しても

うまくいきました。

また、DBから直接  where  列A=1 でLOADすると、1の行だけ正しく

LOADされました。

同じODBCドライバ(Oracle11g純正)を使ってMicrosoftAccessで接続し、抽出すると

「 列A is Null 」 の条件でうまく抽出されます。

Oracleで言うところの nvl や decode の機能を持つ関数がQlikView にあればと

思ったのですが....

Where if(isNull(列A),0,1) = 0  を指定すると   「IF が無効な識別子です」

と エラーになりました。

列A * 1 や 列A + 1  をやってみましたが、Nullのままでした。

当面の処置としてExcelやCSVに変換したものをLOADすることも

考えています。

hka
Employee
Employee

それであれば、

Temp:

LOAD

   :

 列A,

 :;

SQL TABLE;

Table:

Noconcatenate

LOAD

     *

RESIDENT Temp

where not 列A='1';

DROP TABLE Temp;

という形で、全件DBから取り込んだ後に

そのデータを使用してWhere句を使ったLOADを行い

DBから取り込んだデータをドロップすることで処理できます。

こうすることでCSVやExcelなどに出力しないでQlikVIewのみで完結できます。

Not applicable
Author

Hideki Kawahata 様

うまくいきました!!

ありがとうございました。勉強になりました。m(_ _)m

これからもよろしくお願いいたします。

いつの日か回答する側になりたい (^_^;)