2016-05-31 19 views
2

私は2つのテーブルを持っているとしましょう。 1つは、カスタマーサービスに関するお問い合わせに関する情報が記載されたテーブルで、お客様に関する情報と問い合わせが行われた時間が記載されています。顧客の情報(この場合はID)は、今後のすべての問い合わせのために保存されます。別の日付の前に最低日付を見つける

CUST_ID  INQUIRY_ID  INQUIRY_DATE 
001   34    2015-05-03 08:15 
001   36    2015-05-05 13:12 
002   39    2015-05-10 18:43 
003   42    2015-05-12 14:58 
003   46    2015-05-14 07:27 
001   50    2015-05-18 19:06 
003   55    2015-05-20 11:40 

他のテーブルには、すべての顧客からの問い合わせの解決日時に関する情報が含まれています。解決テーブルがCUST_ID以外の照会テーブルにリンクするための鍵を持っていないので、解決までの時間を計算するために、私はそれぞれに解決する前に、最低問い合わせ日を決定したい

CUST_ID  RESOLVED_DATE 
001   2015-05-06 12:54 
002   2015-05-11 08:09 
003   2015-05-14 19:37 
001   2015-05-19 16:12 
003   2015-05-22 08:40 

解決日。私は、クエリがちょうどだろう、分(ケースINQUIRY_DATE < RESOLVED_DT)とが、異なる日付にまたがる複数の問い合わせがあり、顧客001と003のような人々のために行ってきました最初は

CUST_ID  FIRST_INQUIRY  RESOLVED_DT 
001   2015-05-03 08:15  2015-05-06 12:54 
001   2015-05-18 19:06  2015-05-19 16:12 
002   2015-05-10 18:43  2015-05-11 08:09 
003   2015-05-12 14:58  2015-05-14 19:37 
003   2015-05-20 11:40  2015-05-22 08:40 

:結果の表には、このようになります。最後の照会以来の最初の照会日付ではなく、最初の照会日付を返します。誰もこれを行う方法を知っていますか?私はNetezzaを使用しています。

+0

最小抵抗のパスは、解像度テーブルにキーを与えることです。 –

+0

合意しましたが、残念ながら私はその力を持っていません。 – user3642531

+0

私はあなたに以下の回答をしました。これがあなたのニーズを満たしているかどうか教えてください。 –

答えて

0

各テーブル(inquriesおよびresolutions)のサブクエリを作成し、日付を使用してCUST_IDのトランザクションに番号を付けることもできます。次に、2つのサブクエリは、CUST_IDとともにこの順序付けられたインデックス列を使用して結合できます。

inquiriesテーブルのINQUIRY_IDを使用して、ネクタイを壊すこともあります。指定した顧客と日付のresolutionsテーブルのネクタイを壊す方法は、私たちに示したデータに基づいていません。ここで

SELECT t1.CUST_ID, t1.INQUIRY_ID AS FIRST_INQUIRY, t2.RESOLVED_DATE AS RESOLVED_DT 
FROM 
(
    SELECT CUST_ID, INQUIRY_ID, INQUIRY_DATE, 
     (SELECT COUNT(*) + 1 
     FROM inquiries 
     WHERE CUST_ID = t.CUST_ID AND INQUIRY_DATE <= t.INQUIRY_DATE 
      AND INQUIRY_ID < t.INQUIRY_ID) AS index 
    FROM inquiries AS t 
) AS t1 
INNER JOIN 
(
    SELECT CUST_ID, RESOLVED_DATE, 
     (SELECT COUNT(*) + 1 
     FROM resolutions 
     WHERE CUST_ID = t.CUST_ID AND RESOLVED_DATE < t.RESOLVED_DATE) AS index 
    FROM resolutions t 
) AS t2 
    ON t1.CUST_ID = t2.CUST_ID AND t1.index = t2.index 

サブクエリのテーブルがどのように見えるかです:

問い合わせ:

CUST_ID  INQUIRY_ID  INQUIRY_DATE   index 
001   34    2015-05-03 08:15  1 
001   36    2015-05-05 13:12  2 
002   39    2015-05-10 18:43  1 
003   42    2015-05-12 14:58  1 
003   46    2015-05-14 07:27  2 
001   50    2015-05-18 19:06  3 
003   55    2015-05-20 11:40  3 

解像度:このソリューションはに対してロバストでないこと

CUST_ID  RESOLVED_DATE  index 
001   2015-05-06 12:54  1 
002   2015-05-11 08:09  1 
003   2015-05-14 19:37  1 
001   2015-05-19 16:12  2 
003   2015-05-22 08:40  2 

は注意mデータを発行する。閉鎖されていない質問があったり、決議が記録されたりしませんでした。

+0

コメントありがとう、私はそれを試してみます。欠落しているデータは問題ではなく、私は既存の決議日にのみ関心を持っています。 – user3642531

+0

これがコメントであれば、私は答えの長さを想像することはできません: –

+0

ハ、それはコメントより少し長いです、それは本当に、私の謝罪です。私は今日、初めてのコードを実際に見ていますが、これは顧客003の5/14解像度への5/14調査の結びつきではありませんか? (代わりに5/20の照会をリンクする必要があります)。 – user3642531

関連する問題