2016-10-13 25 views
0

中的行中設置優先級標準有關如何使用具有相同材料的條件對行進行優先級排序的任何想法?我需要在我的查詢中捕獲SG(部門)的價值。我有基本查詢只有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 

從例如出227288頁的文件上面,對材料A9000,我發現了價格值是90時,按說我需要有從35的SG2011值,比SG2011等,來自其他部門的每個數值都可以,也就是說,對於b6790,價格值爲20就可以了。除此之外,SG2011的價格優先考慮材料。

我正在使用MS Access 2007,我正在做設計視圖或SQL視圖中的事情。 希望你們能幫助我簡單的代碼..(iff..statements或者乾脆在設計視圖..)或訪問MS 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的輸出的第一行的值 - (我只是做了國營石油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; 
+0

格式正確回答@anne –

+0

你的問題很模糊。如果對於具有SG2011分部的特定材料有任何記錄,則檢索與SG2011相關的價格(哪個價格最低,最高,因爲每個材料/分部組合可能有多行?)。否則,最低(?)價格?。你試過什麼了?請包括任何疑問。 – Rene

+0

嗨@saurabhkamble我編輯的願望,你可以幫助。謝謝 – Anne

回答

0

解決:從發佈的問題,我創建了一系列的查詢。從原始來源表中創建第一個:具有唯一計數的材料(按照標準1完成此操作)第二個:具有無SG部分的材料和第三個:具有SG部分的材料,

在該材料的查詢下具有此代碼沒有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])` 

這對於材料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]) 

收集所有這些DATAS和檢查我創建了一個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; 
    ` 

我來與我的正確價值觀。

0

不知道我的理解,但對於每個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) 
+0

我有一個名爲(Base_Query)的基本查詢,其中有227,288行,其中我在表格(Purchase table)中加入了300,00 ++行的分割和價格原始文件的源。我執行的輸出查詢應該只有每個基本行227,288。它們的連接屬性是「材質」列。我的問題是查詢只需要重複的第一個材料行如上所示爲a9000的副本材料它花費FR390(價格:90)的價格,我需要有SG2011的價格價格。 – Anne

+0

發佈您的查詢和實際和必需的輸出。這可能有助於澄清你之後的事情(你堅持完全模糊)。每當有人要求您澄清時,請回復。 – Rene

+0

嗨@Rene我編輯過。希望你能幫忙。謝謝 – Anne