我是一个SQL Noob,感觉很糟糕,有人要求我使用现有脚本从数据库中提取一些数据。我需要修改脚本,以便使用每个产品的最新价格提取产品信息。完成一些reading之后,我相信我需要使用嵌套的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
我尝试在第一个from语句内使用嵌套的SELECT,但是RDBMS每次都会踢出一个错误,如果有人有任何指针,我将非常感激。
答案 0 :(得分:1)
要获取每个产品更改的最后日期,请尝试以下操作:
(SELECT ProdName1, Max(FillMonth)
FROM tablename
GROUP BY ProdName1) AS ProductDates
您可以在FROM子句中加入此链接,以将结果限制为所需的月份。