2016-10-13 17 views
0

同じ材料の基準で行の優先順位付けを行う方法についてのアイデアはありますか?私は私の質問にSG(部門)の価値を捉える必要があります。私は唯一の227,288行の基本的なクエリを持っていると、これらの値を下にこれらの値を取得するImは約300,00 + +です、私の問題は、ベースの番号で私のクエリを実行しているときは常に、行から最初の材料をキャプチャします。私は取得しています価格値A9000材料のための227288個のファイルのうち上記の例からクエリの行に優先度基準を設定する

ID    MATERIAL    DIVISION     SCOP(price) 

1     a9000     FR390      90 
2     b6790     TB900      20 
3     a9000     SG2011     35 
4     b6790     EU8089     90 

たぶん私はSG2011以外のSG2011から35の値を、持っている必要がある場合、90であります他の部門からのすべての値は大丈夫です。すなわち、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 を実行した後が、 - (Iちょうど作っSCOPのSGのフィールドに - おそらく私はSCOP SGの出力を必要なときに、私の出力クエリ

LV433620材料の画像は、最初の行の値を取りました区別する)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番目:ユニークカウントを持つマテリアル(基準1でこれを実行)第2:SG区分なしのマテリアルと第3:SG区分を持つマテリアル

マテリアル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を作成したチェックを持つ材料のためのNO 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])` 

これと

私は正しい値を持ってきました。

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行と私はテーブル(購入テーブル)部門の生のファイルのソースと300,00 + +の行の価格の結合を残している。私の実行された出力クエリは基本行ごとに227,288しか持たないはずです。それらの結合プロパティは「Material」列です。私の問題は、クエリは、私はSG2011の値段の価格を持っている必要がある部門FR390(価格:90)の価格を取ったa9000の重複する材料のための上記のように重複の最初の材料の行を取るだけです。 – Anne

+0

クエリと実際の必要な出力を送信します。それはあなたが何をしているのかを明確にするのに役立つかもしれません(あなたはまったく漠然としています)。誰かがあなたに明確化を求めるときはいつでも返信してください。 – Rene

+0

こんにちは@Rene私は編集しました。あなたが手伝ってくれるといいなあありがとう – Anne

関連する問題