- PR -

フィールド名の一括指定について

1
投稿者投稿内容
たか1234
会議室デビュー日: 2008/04/20
投稿数: 2
投稿日時: 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 ]
よっし〜。
ベテラン
会議室デビュー日: 2007/04/17
投稿数: 89
お住まい・勤務地: 北のほうの国
投稿日時: 2008-04-22 20:29
引用:

たか1234さんの書き込み (2008-04-20 14:03) より:

質問は外食、パソコンといったフィールド名をいちいち手打ちは大変なのです。パソコンからスーパーまで一括指定する方法はあるのでしょうか?短いSQL文で済ませたいと考えております。皆様のお知恵をご拝借できればと思います。
何卒よろしくお願い申し上げます。


これをどこで実装したいのでしょうか?

sql内で完結させたいのか。(ストアドを使用したいのか)
別のインターフェイスで呼び出して使用するのか。(Winアプリ上、Webアプリ上、VBなりC#なり)
単にメンテナンス作業上、人手がかかるのが嫌なのか。
興味として方法を知りたいのか。

目的の提示も合わせてお願いします。
たか1234
会議室デビュー日: 2008/04/20
投稿数: 2
投稿日時: 2008-04-23 16:20
よっし〜様

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

SQL内で完結させたいと思っております。ストアドを用いる用いないの
手段は問わないです。目的は統計解析を行いたいと思ってます。
統計解析自体は別のアプリでODBC経由で読み込みこんで行います。

問題はテーブルを作成するところなのです。
今までは手打ちでがんばりましたが、フィールドも増加してきて
時間的にきつくなってきました。自分はあまりストアド詳しくないので
少しずつ勉強してますが、なかなか皆様のようにすらっといきません。
データもフィールドもどんどん増えてきて辛くなってきております。

よろしくお願いいたします。
1

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