- - PR -
フィールド名の一括指定について
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2008-04-20 14:03
たかし1234と申します。皆様のお知恵をご拝借頂ければと思います。
環境: SQL2005SP2 OS:Windows2003Server Enterprise Edition x64 SP2 Memory:36GB ユーザ数:3名 質問内容:フィールド名の一括選択は可能でしょうか?以下のサンプルを ご参照お願い申し上げます。 以下のようなテーブルがあったとします。 id product 1 パソコン 1 外食 1 外食 2 鉄道 2 外食 2 通販 3 通販 3 通販 3 スーパー 以下のSQLを実行します。 SELECT T0.C0 AS "id", (CASE WHEN (SUM({fn CONVERT(T0.C1,SQL_BIGINT)}) > 0) THEN 'T' ELSE 'F' END) AS "product_スーパー",(CASE WHEN (SUM({fn CONVERT(T0.C2,SQL_BIGINT)}) > 0) THEN 'T' ELSE 'F' END) AS "product_パソコン",(CASE WHEN (SUM({fn CONVERT(T0.C3,SQL_BIGINT)}) > 0) THEN 'T' ELSE 'F' END) AS "product_外食",(CASE WHEN (SUM({fn CONVERT(T0.C4,SQL_BIGINT)}) > 0) THEN 'T' ELSE 'F' END) AS "product_通販",(CASE WHEN (SUM({fn CONVERT(T0.C5,SQL_BIGINT)}) > 0) THEN 'T' ELSE 'F' END) AS "product_鉄道" FROM (SELECT {fn ROUND(T0."id", 0)} AS C0,(CASE WHEN (T0."product" = 'スーパー') THEN 1 ELSE 0 END) AS C1, (CASE WHEN (T0."product" = 'パソコン') THEN 1 ELSE 0 END) AS C2, (CASE WHEN (T0."product" = '外食') THEN 1 ELSE 0 END) AS C3, (CASE WHEN (T0."product" = '通販') THEN 1 ELSE 0 END) AS C4, (CASE WHEN (T0."product" = '鉄道') THEN 1 ELSE 0 END) AS C5 FROM "dbo"."offset" T0) T0 GROUP BY T0.C0 結果として以下のようになります。横持ちのフラグにするわけです。 id product_スーパー、product_パソコン、product_外食、product_通販、product_鉄道 1 F T T F F 2 F F T T T 3 T F F T F 質問は外食、パソコンといったフィールド名をいちいち手打ちは大変なのです。パソコンからスーパーまで一括指定する方法はあるのでしょうか?短いSQL文で済ませたいと考えております。皆様のお知恵をご拝借できればと思います。 何卒よろしくお願い申し上げます。 たか1234 [ メッセージ編集済み 編集者: たか1234 編集日時 2008-04-20 14:15 ] | ||||
|
投稿日時: 2008-04-22 20:29
これをどこで実装したいのでしょうか? sql内で完結させたいのか。(ストアドを使用したいのか) 別のインターフェイスで呼び出して使用するのか。(Winアプリ上、Webアプリ上、VBなりC#なり) 単にメンテナンス作業上、人手がかかるのが嫌なのか。 興味として方法を知りたいのか。 目的の提示も合わせてお願いします。 | ||||
|
投稿日時: 2008-04-23 16:20
よっし〜様
ご返答ありがとうございます。 SQL内で完結させたいと思っております。ストアドを用いる用いないの 手段は問わないです。目的は統計解析を行いたいと思ってます。 統計解析自体は別のアプリでODBC経由で読み込みこんで行います。 問題はテーブルを作成するところなのです。 今までは手打ちでがんばりましたが、フィールドも増加してきて 時間的にきつくなってきました。自分はあまりストアド詳しくないので 少しずつ勉強してますが、なかなか皆様のようにすらっといきません。 データもフィールドもどんどん増えてきて辛くなってきております。 よろしくお願いいたします。 |
1