Hello Experts,
I have the following query which works just fine in the way I intended.
SELECT
MAX (ch.quote_number) AS OurRef,
sh.orderid AS OrderId,
sd.receipt_number AS ReceiptNo,
sd.item_description AS ItemTag,
ch.quality_check AS InternalPostDate,
sh.received_date AS ReceivedDate,
sh.despatched_date AS DespatchDate,
sh.target_delivery_date AS DeliveryDate,
CASE
WHEN CAST (sh.despatched_date AS Date) <= CAST(sh.target_delivery_date AS Date) THEN 'On Time'
ELSE 'Delivery Failure'
END AS 'Quality Metric'
FROM salesheader sh
INNER JOIN salesdetail sd
ON sh.orderid = sd.orderid
INNER JOIN clientdetails cd
ON cd.clientnumber = sh.clientnumber
INNER JOIN client history ch
ON ch.quote_number = cd.quote_number
INNER JOIN activities a
ON a.activityref = ch.activityref
WHERE sh.despatched_date >= '01/01/18'
AND sd.leadteam IN (CampaignCodeA, CampaignCodeB, CampaignCodeC)
AND sh.order_status = 'Confirmed'
GROUP BY
sh.orderid AS OrderId,
sd.receipt_number,
sd.item_description,
ch.quality_check,
sh.received_date,
sh.despatched_date,
sh.target_delivery_date
I am trying to develop my SQL skills and wondered if it was possible to write the same query using CTE's. This is what I have so far:
WITH CTE1
AS ( SELECT MAX (quote_number), quality_check
FROM clienthistory
GROUP BY quality_check
),
WITH CTE2
AS ( SELECT orderid, received_date, despatched_date, target_delivery_date,
CASE
WHEN CAST (despatched_date AS Date) <= CAST(target_delivery_date AS Date) THEN 'On Time'
ELSE 'Delivery Failure'
END AS 'Quality Metric'
FROM salesheader
),
With CTE3
AS (SELECT receipt_number, item_description
FROM salesdetail
)
I am getting a bit stuck at the point, not sure how to put this together as a CTE.
Does anybody have any suggestions on if/how this query could be written as a CTE?
Thanks for your time
Vinnie