私は2つの列の間の日付の違いを取得しようとしており、最終的には請負業者フィールドでグループ化された平均日を取得しようとしています. ほとんどの SQL をダウンさせることができましたが、複数の if シナリオで日付の違いを取得する方法がわかりません。
基本的に、元の日付列が null で、新しい日付列がそうでない場合、新しい日付と注文された日付の日付差を取得します。逆に。元の日付と新しい日付の両方が null の場合は、日付の差分を null に設定します。グループ化された平均日数を考慮しないと、次のようになります。
以下の SQL (avg 関数はまだ含まれていません):
SELECT PT1.CONTRACTOR AS 'Contractor', PT1.date_order AS "date ordered", PT1.DATE_COMPLETED AS "original date", PT2.DATE_COMPLETED AS "new date",
IF(PT1.DATE_COMPLETED = NULL AND PT2.DATE_COMPLETED IS NOT NULL, DATEDIFF(PT2.DATE_COMPLETED, PT1.DATE_ORDER), IF(PT2.DATE_COMPLETED = NULL AND PT1.DATE_COMPLETED IS NOT NULL, DATEDIFF(PT1.DATE_COMPLETED, PT1.DATE_ORDER), NULL)) AS "DATE DIFF"
FROM PTABLE1 PT1
INNER JOIN PTABLE2 PT2
ON PT1.ID = PT2.ID
WHERE PT2.STATUS = 'To_do' OR PT2.STATUS = 'Completed'
AND PT2.COMPLETE = 'Yes'
-- GROUP BY PT1.CONTRACTOR