Я пытаюсь создать простое представление, которое получает данные из 2 баз данных.
У меня есть таблица booking
, которая отображает каждое бронирование только один раз, и таблица дневников с примечаниями по каждому бронированию.
Каждое бронирование отображается в таблице дневников несколько раз, однако мне нужна только самая последняя заметка и информация о бронировании на мой взгляд
По некоторым причинам это не работает
SELECT
t0.BOOKNO, t0.PARTY, t0.TOUR, t0.DEPART, t0.DEP7, t0.BOOK7, t0.PAID, t0.APRICE, t1.TEXT
FROM
(SELECT DISTINCT
TOP (100) PERCENT
dbo.DIARY.ADDED, dbo.BOOKINGS.BOOKNO, dbo.BOOKINGS.PARTY,
dbo.BOOKINGS.TOUR, dbo.BOOKINGS.DEPART,
dbo.BOOKINGS.DEP7, dbo.BOOKINGS.BOOKED, dbo.BOOKINGS.BOOK7, dbo.BOOKINGS.PAID,
dbo.BOOKINGS.APRICE, dbo.BOOKINGS.STATUS
FROM
dbo.BOOKINGS
CROSS JOIN
dbo.DIARY
WHERE
(dbo.BOOKINGS.PAID IS NULL)
OR (dbo.BOOKINGS.PAID = 0)
GROUP BY
dbo.BOOKINGS.BOOKNO, dbo.BOOKINGS.PARTY, dbo.BOOKINGS.TOUR, dbo.BOOKINGS.DEPART,
dbo.BOOKINGS.DEP7, dbo.BOOKINGS.BOOKED, dbo.BOOKINGS.APRICE, dbo.BOOKINGS.STATUS,
dbo.BOOKINGS.BOOK7, dbo.BOOKINGS.PAID, dbo.DIARY.ADDED
HAVING
(dbo.BOOKINGS.STATUS <> 'xl') AND
(dbo.BOOKINGS.DEPART > CONVERT(int, GETDATE()))
ORDER BY
dbo.BOOKINGS.BOOKNO) AS t0
INNER JOIN
(SELECT
BOOKNO, TEXT, MAX(ADDED) AS added
FROM
dbo.DIARY AS DIARY_1
GROUP BY BOOKNO, TEXT) AS t1 ON t0.BOOKNO = t1.BOOKNO
Я пытался это сделать, но не удалось разобрать текст запроса?
;WITH MostRecentBookings AS ( SELECT dbo.DIARY.ADDED7, dbo.DIARY.ADDED, dbo.BOOKINGS.BOOKNO, dbo.BOOKINGS.PARTY, dbo.BOOKINGS.TOUR, dbo.BOOKINGS.DEPART,
dbo.BOOKINGS.DEP7, dbo.BOOKINGS.BOOKED, dbo.BOOKINGS.BOOK7, dbo.BOOKINGS.PAID, dbo.BOOKINGS.APRICE, dbo.BOOKINGS.STATUS,
dbo.DIARY.TEXT, ROW_NUMBER() OVER(PARTITION BY dbo.BOOKINGS.BOOKNO ORDER BY dbo.DIARY.ADDED DESC) AS 'RowNum'
FROM dbo.BOOKINGS INNER JOIN dbo.DIARY ON dbo.BOOKINGS.BOOKNO = dbo.DIARY.BOOKNO
WHERE (dbo.BOOKINGS.PAID IS NULL) OR (dbo.BOOKINGS.PAID = 0))
SELECT * FROM MostRecentBookings
WHERE RowNum = 1