我是一个 SQL 菜鸟,并且感觉很深,我被要求使用现有脚本从数据库中提取一些数据。我需要修改脚本,以便使用每种产品的最新价格提取产品信息。做了一些阅读后,我相信我需要使用嵌套选择语句来提取每个产品的最大月份以获得最新价格,但我不确定如何将其合并到我的脚本中。
目前数据库返回以下格式:
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
我曾尝试在第一个 from 语句中使用嵌套 SELECT,但 RDBMS 每次都会返回一个错误,如果有人有任何指示,我将不胜感激。