在
SQL Server 2005+
:
SELECT upc, retail_today.*, retail_next_week.*, retail_two_weeks.*
FROM items im
OUTER APPLY
(
SELECT TOP 1
ip_unit_price, ip_price_multiple
FROM retail ip
WHERE ip.ip_start_date <= GETDATE()
AND ip.id = im.id
ORDER BY
ip_start_date DESC
) retail_today
OUTER APPLY
(
SELECT TOP 1
ip_unit_price, ip_price_multiple
FROM retail ip
WHERE ip.ip_start_date BETWEEN GETDATE() AND DATEADD(ww, 1, GETDATE())
AND ip.id = im.id
ORDER BY
ip_start_date DESC
) retail_next_week
OUTER APPLY
(
SELECT TOP 1
ip_unit_price, ip_price_multiple
FROM retail ip
WHERE ip.ip_start_date BETWEEN DATEADD(ww, 1, GETDATE()) AND DATEADD(ww, 2, GETDATE())
AND ip.id = im.id
ORDER BY
ip_start_date DESC
) retail_two_weeks
在
SQL Server 2000
:
SELECT upc,
(
SELECT TOP 1
ip_price
FROM retail ip
WHERE ip.ip_start_date <= GETDATE()
AND ip.id = im.id
ORDER BY
ip_start_date DESC
) AS ip_price_today,
(
SELECT TOP 1
ip_price_multiple
FROM retail ip
WHERE ip.ip_start_date <= GETDATE()
AND ip.id = im.id
ORDER BY
ip_start_date DESC
) AS ip_price_multiple_today,
â¦
FROM items im