Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
初めまして、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 と言うことだと思います。
よろしくお願いします。
データの項目は列Aのみではないですよね。
列Aのみだとデータとして認識しないです。
他の列もあるのであれば、下記where句でいけます。
where not 列A='1'
QV12で確認しました。
もしこれでうまくいかないようであれば、サンプルデータを提供頂けますか。
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することも
考えています。
それであれば、
Temp:
LOAD
:
列A,
:;
SQL TABLE;
Table:
Noconcatenate
LOAD
*
RESIDENT Temp
where not 列A='1';
DROP TABLE Temp;
という形で、全件DBから取り込んだ後に
そのデータを使用してWhere句を使ったLOADを行い
DBから取り込んだデータをドロップすることで処理できます。
こうすることでCSVやExcelなどに出力しないでQlikVIewのみで完結できます。
Hideki Kawahata 様
うまくいきました!!
ありがとうございました。勉強になりました。m(_ _)m
これからもよろしくお願いいたします。
いつの日か回答する側になりたい (^_^;)