Объединить Select SQL в один запрос с несколькими столбцами - PullRequest
1 голос
/ 07 июня 2011

Этот множественный запрос SELECT выполняется последовательно. Мне нужен один отчет с несколькими столбцами для [GBPMID] и [EURMID].

Запрос 1

SELECT
    (([askPrice] - [bidPrice]) / 2) + [bidPrice] AS [EURMID]
    FROM TicksForex 
        WHERE [Symbol] = 'EUR/USD' 
        AND [Time] >= CONVERT(datetime, '6/6/2011 12:00 AM')

Запрос 2

SELECT
     [Time]
    ,[askPrice]
    ,[bidPrice]
    ,(([askPrice] - [bidPrice]) / 2) + [bidPrice] AS [GBPMID]
    FROM TicksForex 
        WHERE [Symbol] = 'GBP/USD'  
        AND [Time] >= CONVERT(datetime, '6/6/2011 12:00 AM')

@ Pranay & @Magnus - мои извинения! Мои таблицы данных не имеют одинаковых значений ВРЕМЕНИ ... что меня удивило ... вот почему записи не выстраиваются в очередь ... очень жаль !! Я выполню это, как @Pranay описывает ниже ...

Забудь об этом! Он нормализовал данные (дату), поэтому все они использовали одну и ту же дату - то есть .. обновленные цены в одно и то же время .. и это все еще не работает !!

Ответы [ 2 ]

1 голос
/ 07 июня 2011

Воспользуйтесь Case...when, чтобы решить вашу проблему легко

SELECT
     [Time]
    ,[askPrice]
    ,[bidPrice],

  ( CASE WHEN Symbol = 
          'GBP/USD' THEN ((([askPrice] - [bidPrice]) / 2) + [bidPrice])
         ELSE 0
      END) AS [GBPMID],
  ( CASE WHEN Symbol =
           'EUR/USD' THEN ((([askPrice] - [bidPrice]) / 2) + [bidPrice])
         ELSE 0
      END) AS [EURMID]

    FROM TicksForex 
        WHERE ([Symbol] = 'GBP/USD'  or [Symbol] = 'EUR/USD' )
        AND [Time] >= CONVERT(datetime, '6/6/2011 12:00 AM')
0 голосов
/ 08 июня 2011

Попробуйте это:

SELECT 
    * 
FROM
    (SELECT
        [Symbol],
        [Time],
        [askPrice],
        [bidPrice],
        ([askPrice] - [bidPrice]) / 2 As calc
    FROM 
        TicksForex
    WHERE 
       ([Symbol] = 'GBP/USD'  or [Symbol] = 'EUR/USD') AND
       [Time] >= CONVERT(datetime, '6/6/2011 12:00 AM')) As srcTable
    PIVOT
    (
        MAX(calc)
        FOR Symbol IN([EUR/USD], [GBP/USD])
    ) As PivotTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...