に私たちに電話をかける電話ダイヤラーがあります。に地域のガス価格について知らせてください。SQL AS/400 - 店舗ごとの製品の価格を抽出する
我々は、コールに関する情報を格納する場所を3つのテーブル(WBDAPP00、WBDCIE00、WBDCIA00)
WBDAPP00
がある持っています。
DANOID
= ID
DA#INT
、DA#IND
、DA#TEL
は=電話番号
DA#ENV
は=グループコールの数は、我々はいくつかの店に1つのメッセージを送信します。
DASTAT
は、コールの状態を=私たちはグループに関する情報を格納場所
DADTHR
は=最後のステータス変更
WBDCIE00
のタイムスタンプがある(一時停止中に、キャンセルたちによって確認され、実行されている、店によって確認してください)店舗の CIE#EN
= ID
CIEDHC
=コールが有効であるタイムスタンプが、我々は価格がために=定期
CIE$PL
のために= 14H30
CIE$OR
で価格を価格を変更します伝えるために朝呼び出すことができますPL私たちは
CIE$SP
が
WBDCIA00
は補足情報についてWBDAPP00
CIA#ST
=店舗
CIA#AP
のID =コールのIDであるディーゼルのスーパー
CIE$DI
=価格の料金を=
CIE#EN
=グループコールのID
CIABAN
=これは店舗のコンパニティー番号です
これは、これは、テーブル間の関係であり、これら3つのテーブル
SELECT * FROM PRDCM/WBDAPP00 WHERE DA#ENV = 17258 OR DA#ENV = 17257
+--------+--------+--------+---------+--------+--------+----------------------------+-----------+--------+ | DANOID | DA#INT | DA#IND | DA#TEL | DA#ENV | DASTAT | DADTHR | DAPARM | DAMUSR | +--------+--------+--------+---------+--------+--------+----------------------------+-----------+--------+ | 100420 | 1 | 418 | 9600055 | 17257 | 4 | 2012-05-07-09.15.04.768228 |1;2;1;1;1;1| ISALAP | | 100421 | 1 | 819 | 7346491 | 17258 | 0 | 2012-05-07-09.23.32.362971 |0;4;0;1;0;0| ISALAP | | 100422 | 1 | 819 | 7624747 | 17258 | 1 | 2012-05-07-09.24.28.042330 |0;3;1;1;0;1| ISALAP | | 100423 | 1 | 819 | 6377874 | 17258 | 0 | 2012-05-07-09.23.32.803073 |0;3;0;1;0;1| ISALAP | | 100424 | 1 | 819 | 8742844 | 17258 | 1 | 2012-05-07-09.24.25.347116 |1;1;1;1;0;1| ISALAP | | 100425 | 1 | 819 | 8255744 | 17258 | 0 | 2012-05-07-09.23.33.207688 |1;3;1;1;0;1| ISALAP | +--------+--------+--------+---------+--------+--------+----------------------------+-----------+--------+
SELECT * FROM PRDCM/WBDCIE00 WHERE CIE#EN = 17258 OR CIE#EN = 17257
+--------+----------------------------+--------+--------+--------+--------+ | CIE#EN | CIEDHC | CIE$OR | CIE$PL | CIE$SP | CIE$DI | +--------+----------------------------+--------+--------+--------+--------+ | 17257 | 2012-05-04-17.00.00.000000 | 0 | 0 | 0 | 1,359 | | 17258 | 2012-05-07-09.30.00.000000 | 1,354 | 0 | 0 | 0 | +--------+----------------------------+--------+--------+--------+--------+
SELECT * FROM PRDCM/WBDCIA00 WHERE CIA#EN = 17258 OR CIA#EN = 17257
+--------+--------+--------+--------+ | CIA#ST | CIA#AP | CIA#EN | CIABAN | +--------+--------+--------+--------+ | 96 | 100420 | 17257 | 2 | | 316 | 100421 | 17258 | 4 | | 320 | 100422 | 17258 | 3 | | 321 | 100423 | 17258 | 3 | | 338 | 100424 | 17258 | 1 | | 366 | 100425 | 17258 | 3 | +--------+--------+--------+--------+
の出力例である
CIA#AP
= DANOID
CIA#EN
= CIE#EN
= DA#ENV
私は最後CIE$OR
(0ではない)を抽出したい
、各CIA#ST
の最後のCIE$DI
(0ではありません)。
最後のものはCIEDHC
(Descの順)で決まります。 DASTAT
は、1または4にする必要があります。
これは私が上記のデータから抽出したいしたいの例です:
+--------+--------+--------+ | CIA#ST | CIE$OR | CIE$DI | +--------+--------+--------+ | 96 | 0 | 1,359 | | 316 | 1,354 | 0 | | 320 | 1,354 | 0 | | 321 | 1,354 | 0 | | 338 | 1,354 | 0 | | 366 | 1,354 | 0 | +--------+--------+--------+
またはこのような、それは理想的ではないのですが、私はこのケースで
+--------+-------------+-------+ | CIA#ST | productType | price | +--------+-------------+-------+ | 96 | 3 | 1,359 | | 316 | 6 | 1,354 | | 320 | 6 | 1,354 | | 321 | 6 | 1,354 | | 338 | 6 | 1,354 | | 366 | 6 | 1,354 | +--------+-------------+-------+をそれに耐えます
AS400を知らない人のために、TOP 1
と等価であり、LIMIT 1
LAST
AS400には存在しないので、私は副選択で試してみましたが、あなたはORDER BY
とFETCH FIRST 1 ROWS ONLY
を使用することはできません SELECT Column1,Column2 FROM table1 ORDER BY Column2 DESC LIMIT 1
によって SELECT LAST(Column1) AS test FROM table1
を交換する必要があります。
私たちはPTFなしでV5R1に入っています。
これは、私はすべてのご提案を試してみましょう抽出
SELECT CIA#ST,CIE$OR,CIE$DI,CIEDHC
FROM PRDCM/WBDAPP03
INNER JOIN PRDCM/WBDCIE01 ON CIE#EN = DA#ENV
INNER JOIN PRDCM/WBDCIA01 ON CIA#AP = DANOID
WHERE DASTAT IN (1,4)
ORDER BY CIEDHC,DA#ENV
FETCH FIRST 5 ROWS ONLY
+--------+--------+--------+----------------------------+ | CIA#ST | CIE$OR | CIE$DI | CIEDHC | +--------+--------+--------+----------------------------+ | 88 | 1,014 | 1,039 | 2010-08-25-09.00.00.000000 | | 89 | 1,014 | 1,039 | 2010-08-25-09.00.00.000000 | | 90 | 1,014 | 1,039 | 2010-08-25-09.00.00.000000 | | 91 | 1,014 | 1,039 | 2010-08-25-09.00.00.000000 | | 119 | 1,084 | 0 | 2010-08-25-09.00.00.000000 | | 522 | 1,014 | 1,039 | 2010-08-25-09.00.00.000000 | +--------+--------+--------+----------------------------+
のexempleです。
'CIE $ OR = 1.587'の行がないので、サンプル/結果データを修正する必要があります。また、あなたがリストした関係を考えれば、 'CIA#ST = 119'を' CIE $ DI = 1.120'に接続できるようなリンクはないようです。あなたのデータを匿名化することは素晴らしいですが、私はこれらの3つのテーブルから有用なものを得ることはできないだろうと思っています(電話番号以外にも)。これまでに試したことを示してもらえますか?ちょうど私たちは何がうまくいかないかを知っていますか?お使いのOSのバージョンを記入してください(私はV6R1 +を想定していますが)。 –
これは、サブクエリと集約グループを巧みに使用して解決できます。 'WBDCIA00'と' WBDAPP00'には2つの異なる結合条件があります。 CIA#AP = DANOID'と 'CIA#EN <> DA#ENV'の関係が1つの試合に存在することはありますか?テーブルとフィールドの簡単な説明を提供するかどうかを判断する方が簡単かもしれません。 – jamesallman
@ X-Zero - >私は実際のデータを入れる権限を持っていますので、私はそれを編集しました。私は新しい試みを追加します。私はas400のバージョンも追加しました。 –