最初は申し訳ありません、件名が貧弱です。仕事の注文の順序を表示するSQLクエリ
編集:ここにクエリは、私は EDITをOrderNumbersを複製しないようにクエリを必要としていますOrderNumbersを複製:質問を短縮し、私は仕事の受注のすべてのレコードを持つテーブルを持っている非常にクリーン質問
を提供実行された。注文には2種類あります。インストールとトラブルコール。私の質問は、インストールから30日以内に発生したトラブル・コールのすべてを検索し、そのトラブル・コール(TC)を適切なInstall(IN)に照合することです。したがって、トラブル・コールの日付はインストール後に発生する必要がありますが、30日を超えてはなりません。さらに、30日以内に同じアカウントに対して2回のインストールと2回のトラブルコールがあり、その結果が反映されなければなりません。私が抱えている問題は、2つの異なるTrouble Call(TC)と2つの異なるInstall(IN)に一致するTrouble Call(TC)に一致するInstall orderを取得していることです。
SQL Fiddle pay closeインストール注文番号1234567810とトラブル・コール注文番号1234567890に注意してください。問題が表示されます。 http://sqlfiddle.com/#!3/811df/8
select b.accountnumber,
MAX(b.scheduleddate) as OriginalDate,
b.workordernumber as OriginalOrder,
b.jobtype as OriginalType,
MIN(a.scheduleddate) as NewDate,
a.workordernumber as NewOrder,
a.jobtype as NewType
from (
select workordernumber,accountnumber,jobtype,scheduleddate
from workorders
where jobtype = 'TC'
) a join
(
select workordernumber,accountnumber,jobtype,scheduleddate
from workorders
where jobtype = 'IN'
) b
on a.accountnumber = b.accountnumber
group by b.accountnumber,
b.scheduleddate,
b.workordernumber,
b.jobtype,
a.accountnumber,
a.scheduleddate,
a.workordernumber,
a.jobtype
having MIN(a.scheduleddate) > MAX(b.scheduleddate) and
DATEDIFF(day,MAX(b.scheduleddate),MIN(a.scheduleddate)) < 31
私は結果が見えるように探しています何の例。 正しいパスで私を設定するために提供できる支援をありがとう。