- PR -

SELECT文でデータが含まれる列だけにしたい

1
投稿者投稿内容
みな
常連さん
会議室デビュー日: 2001/08/18
投稿数: 32
投稿日時: 2005-08-19 14:16
SQLのSELECT文である列のすべての行がNULLの場合、
その列を除きたいのですが、可能でしょうか。
(WHERE句の条件によって全行がNULLになる列は異なります。)
未記入X
大ベテラン
会議室デビュー日: 2005/05/19
投稿数: 136
投稿日時: 2005-08-19 14:28
こんにちは。
引用:

おおとろさんの書き込み (2005-08-19 14:16) より:
SQLのSELECT文である列のすべての行がNULLの場合、
その列を除きたいのですが、可能でしょうか。
(WHERE句の条件によって全行がNULLになる列は異なります。)


上の文の「行」と「列」、これでいいんですか?逆ではないですか?

まあ、それ以前にこのページを熟読して出直してらっしゃい。
今の文では、どの世界で何をしたいのか非常にわかりにくいです。

http://www.hyuki.com/writing/techask.html#summary
未記入
ぬし
会議室デビュー日: 2004/09/17
投稿数: 667
投稿日時: 2005-08-19 15:30
列数を可変にすることはできないから無理。

1. いずれの行においても NULL値しか持たない列を調べる。

2. 上記で調べた列を除いた select 文を動的に組み立てて実行する。

という二段構えが必要でしょう。
Beatle
ぬし
会議室デビュー日: 2003/06/09
投稿数: 394
投稿日時: 2005-08-19 15:53
「ある行のすべての列がNULLの場合、その列を除きたい」

という事なら

Where Not (FieldA is Null AND FieldB is Null AND ...)

ということ?
みな
常連さん
会議室デビュー日: 2001/08/18
投稿数: 32
投稿日時: 2005-08-19 15:56
>列数を可変にすることはできないから無理。

こうはっきり言われて安心?しました。

別の方法を考えます。
(元になっている表は、ある表をクロス集計したものなのですが、
クロス集計の段階で不要な列が含まれないようにしてみます。)
ありがとうございました。
みな
常連さん
会議室デビュー日: 2001/08/18
投稿数: 32
投稿日時: 2005-08-19 15:58
引用:

Beatleさんの書き込み (2005-08-19 15:53) より:
「ある行のすべての列がNULLの場合、その列を除きたい」

という事なら

Where Not (FieldA is Null AND FieldB is Null AND ...)

ということ?



いえ、行ではありません
「ある*列*のすべての列がNULLの場合、その列を除きたい」
ということです。
みな
常連さん
会議室デビュー日: 2001/08/18
投稿数: 32
投稿日時: 2005-08-19 15:59
訂正です。

いえ、行ではありません
「ある*列*のすべての*行*がNULLの場合、その列を除きたい」
ということです。

Anthyhime
ぬし
会議室デビュー日: 2002/09/10
投稿数: 437
投稿日時: 2005-08-19 22:41
であればいったん行の値をチェックするためにいったんSQLを発行して、その後NULLが存在しないカラムだけを選択するSQLを動的に生成して再実行するような感じになりますね。
1

スキルアップ/キャリアアップ(JOB@IT)