Я рассматриваю создание представления из нескольких таблиц, для которых требуется 5 столбцов. Чтобы создать каждый столбец, мне нужно выполнить различные вычисления и исключения с помощью предложения WHERE. например
CREATE VIEW test
AS SELECT date1 as 'YEAR'
FROM booking
WHERE bookingDate BETWEEN '2010-01-01' and '2014-12-31'
этот столбец отлично работает, но теперь я хочу добавить столбец рядом с ним в том же представлении с другим предложением WHERE. Как я могу добавить несколько операторов SELECT, где я могу указать, где границы для каждого столбца индивидуально, а также использовать разные таблицы для этого?
Пример данных:
Table 1
-------------------
BookingID | date
1001 | 2010-01-23
1002 | 2010-02-23
------------------------
Table 2
-----------------------
ProfitID | BookingID| Profit
44 | 1001 | £250
45 | 1002 | £200
----------------------------
Create VIEW
--------------------------
YEAR | Profit
2010 | £450
Я думаю, вы ищете предложение GROUP BY, чтобы получить прибыль за каждый год:
CREATE VIEW test
AS SELECT Year(b.date) as 'YEAR', SUM(t.Profit)
FROM booking b
INNER JOIN Table2 t on b.BookingId=t.BookingId
WHERE bookingDate BETWEEN '2010-01-01' and '2014-12-31'
GROUP BY Year(date)
CREATE view test
AS
SELECT
tst1.First,tst2.Second
FROM (SELECT
date1 AS 'Year1',ROW_NUMBER() OVER(ORDER BY date1) AS RowNumber
FROM Table_1
WHERE bookingDate BETWEEN '2010-01-01' and '2014-12-31'
) tst1
LEFT OUTER JOIN (SELECT
date1 AS 'Year2',ROW_NUMBER() OVER(ORDER BY date1) AS RowNumber
FROM Table_2
WHERE bookingDate BETWEEN '2010-01-01' and '2014-12-31'
) tst2 ON tst1.RowNumber=tst2.RowNumber
go
Используйте UNION между двумя операциями select, как показано ниже.
CREATE VIEW test
AS SELECT date1 as 'YEAR'
FROM booking
WHERE bookingDate BETWEEN '2010-01-01' and '2014-12-31'
UNION
SELECT date2 as 'YEAR2'
FROM booking2
WHERE bookingDate BETWEEN '2010-01-01' and '2014-12-31'