在查询中的行中设置优先级条件
Set priority criteria in rows in Query
关于如何对具有相同 material 的标准的行进行优先排序有什么想法吗?我需要在查询中捕获 SG(division) 的值。我的基本查询只有 227,288 行,从原始文件中我得到的这些值低于 300,00++,我的问题是每当我 运行 查询我的基数时,它只捕获第一个 material 来自行。
ID MATERIAL DIVISION SCOP(price)
1 a9000 FR390 90
2 b6790 TB900 20
3 a9000 SG2011 35
4 b6790 EU8089 90
从上面的示例中的 227,288 个文件中,对于 material a9000,我得到的价格值为 90,而据推测我需要从 SG2011 获得 35 的值,而不是 SG2011,其他的每个值除法没问题,即对于 b6790,价格值为 20 是可以的。除法 SG2011 价格优先 materials。
我使用的是 MS Access 2007,我在设计视图或 SQL 视图中进行操作。
希望你们能用简单的代码帮助我..(iff..statements 或只是在设计视图中..)或 SQL 在 Ms Access
中查看
编辑
下面是我的 SQL 查询
(查询测试 - 这不会离开加入基本查询,因为它不符合行数但我能够显示多个 material)
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
- 我的测试查询图像显示 materials。如图所示 Material:LV433620 有 3 个结果 material。但是一旦我 运行 我的最终查询
Final Output Query
- 我的输出查询图像
LV433620 material 假设我需要 SCOP SG 的输出时取了第一行的值 - (我只是制作了 scop SG 字段来区分)所以而不是 257.42。 material 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;
不确定我是否理解,但是对于每个 MATERIAL
的最低 ID 的 DIVISION
你可以使用 NOT EXISTS()
:
SELECT * FROM YourTable t
WHERE NOT EXISTS(SELECT 1 FROM YourTable s
WHERE t.Material = s.material AND s.id > t.id)
已解决:根据发布的问题,我创建了一系列查询。从原始来源 table 我创建了第一个:Material 具有唯一计数(使用标准 1 完成此操作)第二个:Material 没有 SG 划分,第三个:Material 具有SG师,
在 Material 的查询下有此代码,没有 SG
`SCOPE: IIf([Query_SC_and_Purchase_Price_Scope_SG].[SCOPE] Is Null,[Query_SC_and_Purchase_Price_Scope_NO_SG].[SCOPE],[Query_SC_and_Purchase_Price_Scope_SG].[SCOPE])`
此为 Material 与 SG 代码查询
SCOP: IIf([Query_SC_and_Purchase_Price_Scope_SG].[SCOPE] Is Null,[Query_SC_and_Purchase_Price_Scope_NO_SG].[SCOPE],[Query_SC_and_Purchase_Price_Scope_SG].[SCOPE])
收集所有这些数据并检查我是否创建了 UNION ALL 查询
`SELECT Query_SC_and_Purchase_Price_Scope_Unique.*
FROM Query_SC_and_Purchase_Price_Scope_Unique
UNION ALL
SELECT Query_SC_and_Purchase_Price_Scope_SGNOSG_SG.*
FROM Query_SC_and_Purchase_Price_Scope_SGNOSG_SG
UNION ALL SELECT Query_SC_and_Purchase_Price_Scope_SGNOSG_NOSG.*
FROM Query_SC_and_Purchase_Price_Scope_SGNOSG_NOSG;
`
我的价值观是正确的。
关于如何对具有相同 material 的标准的行进行优先排序有什么想法吗?我需要在查询中捕获 SG(division) 的值。我的基本查询只有 227,288 行,从原始文件中我得到的这些值低于 300,00++,我的问题是每当我 运行 查询我的基数时,它只捕获第一个 material 来自行。
ID MATERIAL DIVISION SCOP(price)
1 a9000 FR390 90
2 b6790 TB900 20
3 a9000 SG2011 35
4 b6790 EU8089 90
从上面的示例中的 227,288 个文件中,对于 material a9000,我得到的价格值为 90,而据推测我需要从 SG2011 获得 35 的值,而不是 SG2011,其他的每个值除法没问题,即对于 b6790,价格值为 20 是可以的。除法 SG2011 价格优先 materials。
我使用的是 MS Access 2007,我在设计视图或 SQL 视图中进行操作。 希望你们能用简单的代码帮助我..(iff..statements 或只是在设计视图中..)或 SQL 在 Ms Access
中查看编辑
下面是我的 SQL 查询 (查询测试 - 这不会离开加入基本查询,因为它不符合行数但我能够显示多个 material)
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 - 我的测试查询图像显示 materials。如图所示 Material:LV433620 有 3 个结果 material。但是一旦我 运行 我的最终查询
Final Output Query - 我的输出查询图像
LV433620 material 假设我需要 SCOP SG 的输出时取了第一行的值 - (我只是制作了 scop SG 字段来区分)所以而不是 257.42。 material 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;
不确定我是否理解,但是对于每个 MATERIAL
的最低 ID 的 DIVISION
你可以使用 NOT EXISTS()
:
SELECT * FROM YourTable t
WHERE NOT EXISTS(SELECT 1 FROM YourTable s
WHERE t.Material = s.material AND s.id > t.id)
已解决:根据发布的问题,我创建了一系列查询。从原始来源 table 我创建了第一个:Material 具有唯一计数(使用标准 1 完成此操作)第二个:Material 没有 SG 划分,第三个:Material 具有SG师,
在 Material 的查询下有此代码,没有 SG
`SCOPE: IIf([Query_SC_and_Purchase_Price_Scope_SG].[SCOPE] Is Null,[Query_SC_and_Purchase_Price_Scope_NO_SG].[SCOPE],[Query_SC_and_Purchase_Price_Scope_SG].[SCOPE])`
此为 Material 与 SG 代码查询
SCOP: IIf([Query_SC_and_Purchase_Price_Scope_SG].[SCOPE] Is Null,[Query_SC_and_Purchase_Price_Scope_NO_SG].[SCOPE],[Query_SC_and_Purchase_Price_Scope_SG].[SCOPE])
收集所有这些数据并检查我是否创建了 UNION ALL 查询
`SELECT Query_SC_and_Purchase_Price_Scope_Unique.*
FROM Query_SC_and_Purchase_Price_Scope_Unique
UNION ALL
SELECT Query_SC_and_Purchase_Price_Scope_SGNOSG_SG.*
FROM Query_SC_and_Purchase_Price_Scope_SGNOSG_SG
UNION ALL SELECT Query_SC_and_Purchase_Price_Scope_SGNOSG_NOSG.*
FROM Query_SC_and_Purchase_Price_Scope_SGNOSG_NOSG;
`
我的价值观是正确的。