PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
9271 99/11/16 10:38:13 RE(19):PB6: クロスタブで列のソートがしたい。 By chooco
9270 99/11/16 10:24:29 RE(18):PB6: クロスタブで列のソートがしたい。 By あすかちゃんの父
9269 99/11/15 20:27:13 RE(17):PB6: クロスタブで列のソートがしたい。 By あすかちゃんの父
9263 99/11/15 17:18:18 RE(16):PB6: クロスタブで列のソートがしたい。 By chooco
9261 99/11/15 16:54:16 RE(15):PB6: クロスタブで列のソートがしたい。 By あすかちゃんの父
9260 99/11/15 16:18:22 RE(14):PB6: クロスタブで列のソートがしたい。 By chooco
9259 99/11/15 15:59:45 RE(13):PB6: クロスタブで列のソートがしたい。 By M.M
9258 99/11/15 15:59:43 RE(12):PB6: クロスタブで列のソートがしたい。 By あすかちゃんの父
9257 99/11/15 15:40:21 RE(11):PB6: クロスタブで列のソートがしたい。 By chooco
9255 99/11/15 15:09:33 RE(10):PB6: クロスタブで列のソートがしたい。 By M.M
9254 99/11/15 14:50:28 RE(9):PB6: クロスタブで列のソートがしたい。 By chooco
9252 99/11/15 14:34:09 RE(8):PB6: クロスタブで列のソートがしたい。 By M.M
9251 99/11/15 14:29:31 RE(7):PB6: クロスタブで列のソートがしたい。 By chooco
9233 99/11/12 18:14:28 RE(6):PB6: クロスタブで列のソートがしたい。 By chooco
9222 99/11/12 15:28:57 RE(5):PB6: クロスタブで列のソートがしたい。 By てとらぽっと
9214 99/11/12 13:40:36 RE(4):PB6: クロスタブで列のソートがしたい。 By chooco
9209 99/11/12 13:13:52 RE(3):PB6: クロスタブで列のソートがしたい。 By あすかちゃんの父
9207 99/11/12 12:57:09 RE(2):PB6: クロスタブで列のソートがしたい。 By chooco
9205 99/11/12 12:36:37 RE(1):PB6: クロスタブで列のソートがしたい。 By まこと
9203 99/11/12 12:02:25 PB6: クロスタブで列のソートがしたい。 By chooco

カテゴリ:PowerBuilderの開発環境
日付:1999年11月15日 20:27 発信者:あすかちゃんの父
題名:RE(17):PB6: クロスタブで列のソートがしたい。

choocoさん、こんばんは。

サブクエリによるクロス集計は、
?列は、親SELECT文に必要なだけのサブクエリのSELECT文を埋め込
まなければならない。
?クロス集計は、1つのテーブルのデータの直交性を利用する。
という性質があります。

例えばプロジェクト管理のデータの適当な例ですが、

プロジェクト名|フェーズ名|完了日
プロジェクトA|フェーズ1|99/11/01・・・?
プロジェクトA|フェーズ2|99/11/15・・・?
プロジェクトB|フェーズ1|99/11/05・・・?
プロジェクトB|フェーズ2|null
プロジェクトC|フェーズ1|null

というテーブルがあったとして、行をプロジェクト、
列をフェーズでフォーマットするSQLは、

SELECT DISTINCT T1.プロジェクト名,
 (SELECT T2.完了日
 FROM TABLE as T2
 WHERE T1.プロジェクト名 = T2.プロジェクト名
 AND T2.フェーズ名 = \'フェーズ1\') as \'Ph1\',
(SELECT T2.完了日
 FROM TABLE as T2
 WHERE T1.プロジェクト名 = T2.プロジェクト名
 AND T2.フェーズ名 = \'フェーズ2\') as \'Ph2\'
FROM TABLE as T1;

というSQLを実行したとします。このSQLは列が、プロ
ジェクト名・フェーズ1完了日・フェーズ2完了日、と
なります。
この時の動きとしては、?のデータを親SELECT文が検
索してくると、T1.プロジェクト名 = プロジェクトA
という条件でサブクエリを検索します。
プロジェクトAに該当するフェーズ1の完了日、99/11/01
をPh1のカラムに返してきます。同じくプロジェクトA
に該当するフェーズ2の完了日、99/11/15をPh2のカラ
ムに返してきます。
?のデータを親SELECT文が検索してくると、?と同じ
結果が返ってくるので、DISTINCT句で1行に集約します。
?のデータを親SELECT文が検索してくると、
T1.プロジェクト名 = プロジェクトBという条件でサブ
クエリを検索します。

(続く)


付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows95
DBMS (記載なし)
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS Sybase SQL Server System 10
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.