2012-04-20 3 views
0

У меня есть две таблицы, который выглядит, как показано нижеSQL - Присоединение одной таблицы с другой на основе (значение строки из первой таблицы к значению столбца из второй таблицы)

Первый стол:

DealNum  CurrencyValue  CurrencyCode  Date 

    110    100     AA   01/12/2011 
    111    200     AB   01/11/2011 
    112    120     AC   01/10/2011 
    113    20     AA   01/11/2011 
    110    103     AD   01/12/2011 
    115    200     AD   01/11/2011 
    119    120     AG   01/10/2011 
    130    20     AK   01/11/2011 

вторая таблица

CurrencyCode  OCT  NOV  DEC  JAN .. 

     AA    0.91  0.88  0.9  0.94 
     AB    0.9  0.8  0.96 0.89 
     AC    0.81  0.79  0.82 0.84 
     AD    0.4  0.41  0.42 0.39 
     AE    0.9  0.92  0.91 0.94 
     AF    0.8  0.82  0.83 0.81 

теперь я хочу, чтобы добавить данные из второй таблицы в первую таблицу в новой колонке со следующими условиями

1.It has to do based on the CurrencyCode and month 
2.If the deal is from DEC and currencyCode is AA , then it has to take the value 0.9, 
    if the deal is from NOV and currencyCode is AA , then it has to take the value 0.88.. 

Таким образом, результат должен выглядеть следующим образом

DealNum  CurrencyValue  CurrencyCode  Date  NewColumn 

    110    100     AA   01/12/2011  0.9 
    111    200     AB   01/11/2011  0.8 
    112    120     AC   01/10/2011  0.81 
    113    20     AA   01/11/2011  0.88 
    110    103     AD   01/12/2011  0.42 
    115    200     AD   01/11/2011  0.41 
    119    120     AG   01/10/2011   -- 
    130    20     AK   01/11/2011   -- 

я не имею ни малейшего понятия о том, как сделать это с помощью сравнения значения строки в месяц из первой таблицы к значению столбца месяца во второй таблице. Пожалуйста, помогите мне с этим.

Заранее спасибо.

Cheers, Harish.

ответ

1

Это должно сработать, хотя вторая таблица не разработана хорошо.

SELECT DealNum  
     , CurrencyValue  
     , CurrencyCode  
     , Date 
     , Deal = 
     CASE MONTH(t1.Date) 
      WHEN 1 THEN t2.JAN 
      WHEN 2 THEN t2.FEB 
      WHEN 3 THEN t2.MAR 
      -- ..... 
      WHEN 10 THEN t2.OCT 
      WHEN 11 THEN t2.NOV 
      WHEN 12 THEN t2.DEC 
     END 
FROM Table1 t1 
INNER JOIN Table2 t2 ON t1.CurrencyCode = t2.CurrencyCode 
+0

Спасибо Тим Schmelter .. это один большой .. работает хорошо для меня. Но вот здесь имена столбцов (Месяцы) во второй таблице продолжают меняться каждый раз, есть ли какой-либо динамический способ сделать это, например, если t1.date = t2. (XYZ month), затем t2.Jan или t2. февраль ??? В очередной раз благодарим за помощь :)) – harry

Смежные вопросы