SQL несколько операторов SELECT в VIEW - PullRequest
0 голосов
/ 30 июня 2018

Я смотрю на создание представления из нескольких таблиц, которое требует 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

Ответы [ 3 ]

0 голосов
/ 30 июня 2018

Я думаю, что вы ищете предложение 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 голосов
/ 30 июня 2018
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 голосов
/ 30 июня 2018

Используйте UNION между вашими двумя утверждениями, как показано ниже.

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...