Я SQL Noob и был добавлен в глубокий конец, он чувствует, меня попросили извлечь некоторые данные из БД, используя существующий скрипт.Мне нужно изменить скрипт так, чтобы я извлекал информацию о продукте, используя последнюю цену для каждого продукта.Сделав некоторые чтения Я считаю, что мне нужно использовать вложенное выражение select, чтобы получить максимальный месяц для каждого продукта, чтобы получить самую последнюю цену, но я не уверен, как включить его в мой сценарий.
В настоящее время БД возвращает следующий формат:
Fill Month ProdName1 ProdName2 PackType Quantity Prod Cost
2018/01 ProdA ProdA_ALT Pack1 30 7.35
2018/02 ProdB ProdB_ALT Pack5 60 6.68
2018/01 ProdE ProdE_ALT Pack2 54538 81010.86
2018/03 ProdA ProdA_ALT Pack1 600 97.22
2018/01 ProdC ProdC_ALT Pack2 1230 30192.25
2018/05 ProdD ProdD_ALT Pack4 60262 51396.6
2018/01 ProdF ProdF_ALT Pack3 480 109.3
2018/07 ProdA ProdA_ALT Pack1 210 149.94
2018/09 ProdF ProdF_ALT Pack3 360 26.68
2018/10 ProdD ProdD_ALT Pack4 9585 14350.47
Но я хочу вернуть строки № 2,3,5,8,9,10, поскольку это последние цены, основанные на датекаждый из продуктов.
Мой SQL-запрос выглядит следующим образом:
SELECT
table1.month AS 'Fill Month',
table2.field2 AS PackType,
TRIM(table2.brand) ProdName1,
TRIM(table2.field3) ProdName2,
SUM(table3.field4) 'Fill Qty',
SUM(table3.field5) 'Calc Cost'
FROM
DB_Name.overseas.CLAIMINFO table3
INNER JOIN DB_Name.overseas.DIM1 table1
ON table3.key1 = table1.key1
INNER JOIN DB_Name.overseas.DIM2 table2
ON table3.key2 = table2.key2
INNER JOIN DB_Name.overseas.DIM3 table4
ON table3.key3 = table4.key3
INNER JOIN DB_Name.overseas.DIM4 table5
ON table3.key4 = table5.key4
INNER JOIN DB_Name.overseas.DIM5 table6
ON table3.key5 = table6.key5
INNER JOIN DB_Name.overseas.LOOKUP table7
ON table3.key6 = table7.key6
INNER JOIN DB_Name.overseas.DIM6 table8
ON table3.key7 = table8.key7
INNER JOIN DB_Name.overseas.LOOKUP_key8 table9
ON table3.key8 = table9.key8
WHERE
table1.day BETWEEN '2018-01-01' AND '2018-08-31' --TIME PERIOD
AND (table2.brand LIKE '%PRODA%' OR table2.brand LIKE '%PRODUCTB%'
OR table2.brand LIKE '%PRODC%'
OR table2.brand LIKE '%PRODD%'
OR table2.brand LIKE '%PRODE%'
OR table2.brand LIKE '%PRODF%'
AND LEFT(table3.account_id, 1) <> 'E'
AND grp1.grp_nbr NOT IN ('12345', '67890')
GROUP BY
table1.month,
table2.field2,
table2.field3,
table2.drug_str_descr,
dr1
Я пытался использовать вложенный SELECT только внутри первого оператора from, но СУБД каждый раз выдает ошибку, если у кого-либо есть указателиБуду очень признателен.