Объединенный отчет из двух таблиц SQL

293
10 ноября 2017, 07:56

Нужно вывести item_id и price_in_rub. Price_in_rub – стоимость rub, считается как price из таблицы items умноженная на курс валюты на максимальную дату выставления курса из таблицы rates.

Выглядит все это примерно так: Например: item_id=5 price = 20 EUR, в таблице rates максимальная дата выставления курса евро – 13 января, на эту дату курс равнялся 3,0. Итого price_in_rub 20*3,0 = 60.

items   
item_id |price  | currency  
1       |100    | USD   
2       |10     | EUR   
3       |20     | USD   
4       |40     | USD   
5       |20     | EUR   
7       |400    | USD
rates
currency|   date    |   rate
USD     | 10.01.2017|   1,0
USD     | 11.01.2017|   1,5
USD     | 12.01.2017|   2,0
EUR     | 13.01.2917|   3,0
EUR     | 12.01.2017|   2,5
Answer 1

Решение с корелированым подзапросом:

SELECT
    itm.item_id
    ,(itm.price * cur.rate) price_in_rub
FROM items itm
    CROSS APPLY
        (
            SELECT TOP 1 rate
            FROM rates
            WHERE itm.currency = rates.currency
            ORDER BY date desc
        ) cur
Answer 2

Вот такой вариант по быстрее будет:

SELECT it.item_id, it.price*r.rate AS price_in_rub
FROM dbo.items AS it 
JOIN dbo.rates AS r ON it.currency = r.currency
WHERE r.date = (SELECT MAX(date) FROM dbo.rates AS r2 WHERE r.currency = r2.currency)
READ ALSO
Запрос SQL на удаление дубликатов из таблицы по одному полю

Запрос SQL на удаление дубликатов из таблицы по одному полю

Есть таблица с дубликатами в MySQL: (по полю name)

479
Multiple log in handle by servlets [требует правки]

Multiple log in handle by servlets [требует правки]

I have a small webapp based on servlets and jabsorbThere are two types of users in my app - managers and regular users

308
Листинги для книги Java для чайников [требует правки]

Листинги для книги Java для чайников [требует правки]

Кто-нибудь может подсказать где можно скачать листинги для книги "Java для чайников"?

340
Ошибка при отвязке Service

Ошибка при отвязке Service

Есть Activity которое делает привязку Service

392