SQL несколько операторов SELECT в VIEW

0

Я рассматриваю создание представления из нескольких таблиц, для которых требуется 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
  • 0
    Пожалуйста, предоставьте образец данных и желаемых результатов.
  • 0
    я добавил некоторые данные таблицы
Теги:

3 ответа

2
Лучший ответ

Я думаю, вы ищете предложение 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)
  • 0
    Должно ли это быть «Таблица1» вместо «бронирование»? В противном случае это выглядит как очень хороший ответ для меня.
  • 0
    он получил бронирование в вопросе, хотя
Показать ещё 3 комментария
0
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
0

Используйте 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'
  • 0
    когда я использую UNION, он объединяет все мои данные в первый созданный мной столбец, я хочу, чтобы они были в двух разных столбцах, это возможно?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню