【发布时间】:2017-02-22 06:42:23
【问题描述】:
关于如何根据具有相同材料的标准对行进行优先级排序有什么想法吗?我需要在查询中捕获 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;
Query Test - 我的测试查询图像以显示材料。如图 材料:LV433620 有 3 个材料结果。但是一旦我运行了我的最终查询
Final Output Query - 我的输出查询的图像
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;
【问题讨论】:
-
格式你回答正确@anne
-
你的问题很模糊。如果有任何关于具有 SG2011 部门的特定材料的记录,则检索与 SG2011 相关的价格(哪个价格、最低、最高,因为每个材料/部门组合可能有多行?)。否则,最低(?)价格?你都尝试了些什么?请包括任何查询。
-
嗨@saurabhkamble 我已经编辑希望你能帮忙。谢谢
标签: sorting ms-access sql-order-by sql-view design-view