2017-12-29 7 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는 예/아니오 필드 또는 텍스트 유형입니까? 다음과 같은 :'어디서 ... 그리고 아닌 Transaction_id IN (SELECT Transaction_id FROM Table WHERE void_ind = True); ' – June7

+0

예 void_ind는 Yes/No 필드입니다. 나는 이것을 시도하고 그것이 어떻게 작동하는지 알려 줄 것이다. –

답변

0

조건 중 하나에 트랜잭션 ID가 5066이어야한다고 나와 있기 때문에 결과가 표시되지 않습니다. 해당 기준을 제거하고 기준에서 제외하려는 거래의 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 ~ 12 17 8885 1 $ 8.40 (906) N
5206 20 ~ 12 17 8885 1 $ 8.40 (906) N
5206 20 ~ 12 17 8885 1 $ 8.40 (906) N
5206 20 -dec-17 8885 1 $ 8.40 (906) N
5195 20 ~ 12 17 209 3 $ 3.98 599 Y
5195 20 ~ 12 17 209 3 $ 3.98 599 N
5195 20 ~ 12 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,314,960,453,210 5195 20 ~ 12 17 209 3 $ 3.98 599 N
5181 20 ~ 12 17 8689 2 $ 6.48 654 N
5181 20 ~ 12 17 8689 2 $ 6.48 654 N

내 데이터 스토어 (5206)를 포함 할 필요

Transaction_id 8885 및 5181 Transaction_id 8689를 저장하십시오. 동일한 트랜잭션에서 Y와 N을 보여주기 때문에 저장소 5195와 트랜잭션 209을 제외해야합니다. 다행히 내 데이터가 어떻게 보이는지 보여주는 좋은 예입니다. 이것은 단지 내 데이터 샘플입니다.

관련 문제