2017-12-29 65 views
0

私は受領明細項目の詳細を見ていますが、それに含まれる基準のために特定の取引を除外した問題があります。私はトランザクション内のアイテムを無効にしたトランザクションを持っているので、自分のデータ内のトランザクション全体を除外する必要があります。例えば:アクセスクエリで特定のデータを除外する方法

   Transaction_id  void_ind 
1 2 1430 12/20/2017 5066 3 2.37 614 N 
1 2 1430 12/20/2017 5066 3 2.37 614 N 
1 2 1430 12/20/2017 5066 3 2.37 614 N 
1 2 1430 12/20/2017 5066 3 2.37 614 N 
1 2 1430 12/20/2017 5066 3 2.37 614 Y 
1 2 1430 12/20/2017 5066 3 2.37 614 Y 
1 2 1430 12/20/2017 5066 3 2.37 614 Y 
1 2 1430 12/20/2017 5066 3 2.37 614 N 
1 2 1430 12/20/2017 5066 3 2.37 614 Y 
1 2 1430 12/20/2017 5066 3 2.37 614 N 
1 2 1430 12/20/2017 5066 3 2.37 614 Y 

トランザクション番号は5066であり、各行は、レシート上の特定のアイテムです。 YとNは、そのアイテムが無効であるかどうかを示します。

私が行う必要があるのは、このトランザクション全体を自分のデータから除外することです。私が含まれているヘッダーは、正しいフィールド名です。

これは、SQLは以下のようになります。誰かがこれを助けることができれば

SELECT BIGPDATAVIEW_TRANSACTION_HEADER.transaction_type_cd, 
     BIGPDATAVIEW_TRANSACTION_HEADER.transaction_status_cd, 
     BIGPDATAVIEW_TRANSACTION_HEADER.location_id, 
     BIGPDATAVIEW_TRANSACTION_HEADER.transaction_dt, 
     BIGPDATAVIEW_TRANSACTION_HEADER.transaction_id, 
     BIGPDATAVIEW_TRANSACTION_HEADER.workstation_id, 
     BIGPDATAVIEW_TRANSACTION_TOTAL.total_transaction_amt, 
     BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_duration_nbr, 
     BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM.void_ind 
FROM ((BIGPDATAVIEW_TRANSACTION_HEADER 
     INNER JOIN BIGPDATAVIEW_RETAIL_TRANSACTION ON (BIGPDATAVIEW_TRANSACTION_HEADER.location_id = BIGPDATAVIEW_RETAIL_TRANSACTION.location_id) 
     AND (BIGPDATAVIEW_TRANSACTION_HEADER.transaction_dt = BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_dt) 
     AND (BIGPDATAVIEW_TRANSACTION_HEADER.transaction_id = BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_id) 
     AND (BIGPDATAVIEW_TRANSACTION_HEADER.workstation_id = BIGPDATAVIEW_RETAIL_TRANSACTION.workstation_id)) 
     INNER JOIN BIGPDATAVIEW_TRANSACTION_TOTAL ON (BIGPDATAVIEW_TRANSACTION_HEADER.location_id = BIGPDATAVIEW_TRANSACTION_TOTAL.location_id) 
     AND (BIGPDATAVIEW_TRANSACTION_HEADER.transaction_dt = BIGPDATAVIEW_TRANSACTION_TOTAL.transaction_dt) 
     AND (BIGPDATAVIEW_TRANSACTION_HEADER.transaction_id = BIGPDATAVIEW_TRANSACTION_TOTAL.transaction_id) 
     AND (BIGPDATAVIEW_TRANSACTION_HEADER.workstation_id = BIGPDATAVIEW_TRANSACTION_TOTAL.workstation_id)) 
INNER JOIN BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM ON (BIGPDATAVIEW_RETAIL_TRANSACTION.location_id = BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM.location_id) 
AND (BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_dt = BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM.transaction_dt) 
AND (BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_id = BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM.transaction_id) 
AND (BIGPDATAVIEW_RETAIL_TRANSACTION.workstation_id = BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM.workstation_id) 
WHERE (((BIGPDATAVIEW_TRANSACTION_HEADER.transaction_type_cd)="1") 
     AND ((BIGPDATAVIEW_TRANSACTION_HEADER.transaction_status_cd)="2") 
     AND ((BIGPDATAVIEW_TRANSACTION_HEADER.location_id)=1430) 
     AND ((BIGPDATAVIEW_TRANSACTION_HEADER.transaction_dt)=#12/20/2017#) 
     AND ((BIGPDATAVIEW_TRANSACTION_HEADER.transaction_id)=5066) 
     AND ((BIGPDATAVIEW_TRANSACTION_TOTAL.total_transaction_amt)>0 
      AND (BIGPDATAVIEW_TRANSACTION_TOTAL.total_transaction_amt)<10) 
     AND ((BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_duration_nbr)>500)); 

はそれがとても役立つだろう。前もって感謝します。

+1

void_indはYes/Noフィールドまたはテキストタイプですか?次のようなものがあります: 'WHERE ... AND NOT Transaction_id IN(SELECT Transaction_id FROM Table WHERE void_ind = True); ' – June7

+0

はいvoid_indはYes/Noフィールドです。私はこれを試して、それがどのように動作するかを知らせます –

答えて

0

トランザクションIDが5066である必要があるという条件の1つがあるため、結果が表示されません。その基準を削除し、その基準で除外するトランザクションのID番号を除外する必要があります。

はこれを試してみてください:

SELECT BIGPDATAVIEW_TRANSACTION_HEADER.transaction_type_cd, 
    BIGPDATAVIEW_TRANSACTION_HEADER.transaction_status_cd, 
    BIGPDATAVIEW_TRANSACTION_HEADER.location_id, 
    BIGPDATAVIEW_TRANSACTION_HEADER.transaction_dt, 
    BIGPDATAVIEW_TRANSACTION_HEADER.transaction_id, 
    BIGPDATAVIEW_TRANSACTION_HEADER.workstation_id, 
    BIGPDATAVIEW_TRANSACTION_TOTAL.total_transaction_amt, 
    BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_duration_nbr, 
    BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM.void_ind 
FROM ((BIGPDATAVIEW_TRANSACTION_HEADER 
    INNER JOIN BIGPDATAVIEW_RETAIL_TRANSACTION ON (BIGPDATAVIEW_TRANSACTION_HEADER.location_id = BIGPDATAVIEW_RETAIL_TRANSACTION.location_id) 
    AND (BIGPDATAVIEW_TRANSACTION_HEADER.transaction_dt = BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_dt) 
    AND (BIGPDATAVIEW_TRANSACTION_HEADER.transaction_id = BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_id) 
    AND (BIGPDATAVIEW_TRANSACTION_HEADER.workstation_id = BIGPDATAVIEW_RETAIL_TRANSACTION.workstation_id)) 
    INNER JOIN BIGPDATAVIEW_TRANSACTION_TOTAL ON (BIGPDATAVIEW_TRANSACTION_HEADER.location_id = BIGPDATAVIEW_TRANSACTION_TOTAL.location_id) 
    AND (BIGPDATAVIEW_TRANSACTION_HEADER.transaction_dt = BIGPDATAVIEW_TRANSACTION_TOTAL.transaction_dt) 
    AND (BIGPDATAVIEW_TRANSACTION_HEADER.transaction_id = BIGPDATAVIEW_TRANSACTION_TOTAL.transaction_id) 
    AND (BIGPDATAVIEW_TRANSACTION_HEADER.workstation_id = BIGPDATAVIEW_TRANSACTION_TOTAL.workstation_id)) 
INNER JOIN BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM ON (BIGPDATAVIEW_RETAIL_TRANSACTION.location_id = BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM.location_id) 
AND (BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_dt = BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM.transaction_dt) 
AND (BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_id = BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM.transaction_id) 
AND (BIGPDATAVIEW_RETAIL_TRANSACTION.workstation_id = BIGPDATAVIEW_RETAIL_TRANSACTION_LINE_ITEM.workstation_id) 
WHERE (((BIGPDATAVIEW_TRANSACTION_HEADER.transaction_type_cd)="1") 
    AND ((BIGPDATAVIEW_TRANSACTION_HEADER.transaction_status_cd)="2") 
    AND ((BIGPDATAVIEW_TRANSACTION_HEADER.location_id)=1430) 
    AND ((BIGPDATAVIEW_TRANSACTION_HEADER.transaction_dt)=#12/20/2017#) 
'This is the line you have to take out: 
'AND ((BIGPDATAVIEW_TRANSACTION_HEADER.transaction_id)=5066) 
    AND ((BIGPDATAVIEW_TRANSACTION_TOTAL.total_transaction_amt)>0 
     AND (BIGPDATAVIEW_TRANSACTION_TOTAL.total_transaction_amt)<10) 
    AND ((BIGPDATAVIEW_RETAIL_TRANSACTION.transaction_duration_nbr)>500) 
'This is the line you will need to put in: 
    AND BIGPDATAVIEW_TRANSACTION_HEADER.transaction_id NOT IN(5066)); 

私は彼WHERE句の終わりに条件 'NOT IN' を追加しました。将来、別のトランザクションを除外したい場合は、そのために追加の数字をかっこ内に入れることができます。例:

NOT IN(5066, 5099, 3048) 

これが役立つかどうかを教えてください。例について

+0

それは挑戦的に私がやろうとしているところに私を近づけますが、特定の取引番号を含める必要はありません。私は1400店舗のデータを稼動させ、データは特定の店舗にリンクされた店舗を1〜1400店舗持つことになります。私はそれが次のように動作することを期待していました:void_indにYとNの両方が含まれている場合exclude transaction_idクイック応答ありがとう! –

+0

わかりやすくするために、最初の質問では単一のトランザクションIDを特定していましたが、あなたの投稿は 'この全体のトランザクション'を除外するように求められました...しかし、私の理解するような問題は少し異なります。 サブクエリに基づいて除外する条件を追加する必要があります。 –

0


5206 20日 - 17 8885 1 $ 8.40 906 N
5206 20日 - 17 8885 1 $ 8.40 906 N
5206 20日 - 17 8885 1 $ 8.40 906 N
5206 20 - デカ-17 8885 1 $ 8.40 906 N
5195 20日 - 17 209 3 $ 3.98 599 Y
5195 20日 - 17 209 3 $ 3.98 599 N
5195 20日 - 17 209 3 $ 3.98 599 N
5195 20-Dec-17 209 3 $ 3.98 599 N
5195 20-Dec-17 209 3 $ 3.98 599 N
5195 20日 - 17 209 3 $ 3.98 599 N
5181 20日 - 17 8689 2 $ 6.48 654 N
5181 20日 - 17 8689 2 $ 6.48 654 N

マイデータストア5206を含める必要があり

Transaction_id 8885と5181 Transaction_id 8689を格納します。同じトランザクション内にYとNが表示されるため、ストア5195とトランザクション209を除外する必要があります。うまくいけば、それは私のデータがどのように見えるかの良い例です。これは私のデータの単なるサンプルです

関連する問題