关于如何根据具有相同材料的标准对行进行优先级排序的任何想法?我需要在查询中捕获 SG(division) 的值。我的基本查询只有 227,288 行,从原始文件中得到的这些值大约是 300,00++,我的问题是每当我使用基数运行查询时,它只从行中捕获第一个材料。
ID MATERIAL DIVISION SCOP(price)
1 a9000 FR390 90
2 b6790 TB900 20
3 a9000 SG2011 35
4 b6790 EU8089 90
从上面的示例中,从 227,288 个文件中,对于材料 a9000,我得到的价格值为 90,而据推测我需要从 SG2011 获得 35 的值,除了 SG2011,其他部门的每个值都可以,即对于 b6790 没关系有20的价格值。师SG2011价格是材料优先。
我正在使用 MS Access 2007,我在设计视图或 SQL 视图中做事。希望你们能用简单的代码帮助我..(iff..statements 或只是在设计视图中..)或 MS Access 中的 SQL 视图
编辑
下面是我的 SQL 查询(查询测试 - 这不会离开加入基本查询,因为它不符合行数但我能够显示多个材料)
SELECT Base_CSC.ID, Base_CSC.Material, SC_and_Purchase_Price.[Logistic Ref], SC_and_Purchase_Price.[Commercial Ref], Left([Division],2) & ([Commercial Ref]) AS [Comm Ref], Left([Division],2) & ([Logistic Ref]) AS [Log Ref], IIf(Left([Comm Ref],'2')="SG",[SCOP],'') AS [SCOP SG], SC_and_Purchase_Price.[SC in AUD] AS SCOP
FROM Base_CSC LEFT JOIN SC_and_Purchase_Price ON (Base_CSC.Material = SC_and_Purchase_Price.[Commercial Ref]) AND (Base_CSC.Material = SC_and_Purchase_Price.[Logistic Ref])
ORDER BY Base_CSC.ID;
查询测试 - 我的测试查询图像以显示材料。如图 材料:LV433620 有 3 个材料结果。但是一旦我运行我的最终查询
最终输出查询 - 我的输出查询的图像
LV433620 材料在我需要 SCOP SG 的输出时取了第一行的值 - (我只是做了 scop SG 字段来区分)所以而不是 257.42。我需要材料 LV433620 的 SCOP 值 215.50。
下面是最终输出查询 SQL 视图
SELECT Base_CSC.ID, Base_CSC.Material, Base_CSC.[Vendor Reference], Base_CSC.[Default Vendor], First(IIf(IsNull([scop3_v2.SCOP]),[scop3_v2_1.SCOP],[scop3_v2.SCOP])) AS SCOP
FROM (Base_CSC LEFT JOIN scop3_v2 AS scop3_v2_1 ON Base_CSC.Material = scop3_v2_1.scop1.SCOPLookup) LEFT JOIN scop3_v2 ON Base_CSC.Material = scop3_v2.scop2.SCOPLookup
GROUP BY Base_CSC.ID, Base_CSC.Material, Base_CSC.[Vendor Reference], Base_CSC.[Default Vendor]
ORDER BY Base_CSC.ID;