Я пытаюсь написать запрос, который находит дубликаты. В запросе будут указаны даты последнего заказа 2013 года, а затем соответствующие последним заказам 2014, чтобы найти записи, которые существуют в BOTH годах. Мой код дает мне только данные 2013 года, а не для 2013 и 2014 годов. Поэтому я хотел бы показать дубликаты для обоих лет.Повторяющиеся записи в таблице серверов SQl Разный год
Например Ниже приведен пример данных
Bill_Member_ID........Lname....................Order_Date
123..........................Smith...............01/05/2013
123..........................Smith...............02/15/2014
123..........................Smith...............02/18/2014
456..........................Jones...............01/07/2013
789..........................Brown...............01/05/2013
789..........................Brown...............02/17/2014
789..........................Brown...............03/17/2014
992..........................White...............03/15/2013
992..........................White...............01/05/2014
Итак, я должен получить возврат
Bill_Member_ID........Lname....................Order_Date
123..........................Smith...............01/05/2013
123..........................Smith...............02/18/2014
789..........................Brown...............01/05/2013
789..........................Brown...............03/17/2014
992..........................White...............03/15/2013
992..........................White...............01/05/2014
Вот мой код
SELECT
OMFMC.BILL_MASTER_CUSTOMER_ID,
OMFMC.BILL_FIRST_NAME,
OMFMC.BILL_LAST_NAME,
OMFMC.BILL_LABEL_NAME,
OMFMC.BILL_PRIMARY_EMAIL_ADDRESS,
OMFMC.BILL_ADDRESS_1,
OMFMC.BILL_ADDRESS_2,
OMFMC.BILL_CITY,
OMFMC.BILL_STATE,
OMFMC.BILL_POSTAL_CODE,
CMI.NATIONAL_LEVEL2,
MAX(OMFMC.ORDER_DATE),
OMFMC.ORDER_DATE,
FT.PAYMENT_AMOUNT,
SUM(FT.PAYMENT_AMOUNT)as SUM
FROM
CUSTOMER CUSTOMER_IN_TRIBUTE_TO
RIGHT OUTER JOIN ORDER_FND_DETAIL OFD
ON (CUSTOMER_IN_TRIBUTE_TO.MASTER_CUSTOMER_ID=OFD.IN_TRIBUTE_TO_MAST_CUST
and CUSTOMER_IN_TRIBUTE_TO.SUB_CUSTOMER_ID=OFD.IN_TRIBUTE_TO_SUB_CUST)
RIGHT OUTER JOIN ORDER_MBR_FND_MTG_CUS_INFO_VW OMFMC
ON (OMFMC.ORDER_NO=OFD.ORDER_NO
and OMFMC.ORDER_LINE_NO = OFD.ORDER_LINE_NO )
LEFT OUTER JOIN CUS_CURRENT_MEMBERSHIP_INFO CMI
ON (CMI.MASTER_CUSTOMER_ID=OMFMC.BILL_MASTER_CUSTOMER_ID
and CMI.SUB_CUSTOMER_ID=OMFMC.BILL_SUB_CUSTOMER_ID)
LEFT OUTER JOIN FAR_TXN FT
ON (FT.ORDER_NO=OMFMC.ORDER_NO
and FT.ORDER_LINE_NO=OMFMC.ORDER_LINE_NO)
WHERE
OMFMC.ORDER_STATUS_CODE='A'
AND OMFMC.LINE_STATUS_CODE = 'A'
AND OMFMC.ORDER_STATUS_CODE = 'A'
AND OMFMC.LINE_STATUS_CODE = 'A'
AND OMFMC.BILL_CUSTOMER_CLASS_CODE Not IN ('TEST_MBR','STAFF')
AND FUND in ('FOSFN' , 'MFUND')
and(DATEPART(year, OMFMC.ORDER_DATE) ='2013')
and OMFMC.BILL_MASTER_CUSTOMER_ID In (
(select OMFMC.BILL_MASTER_CUSTOMER_ID
From ORDER_MBR_FND_MTG_CUS_INFO_VW OMFMC
where (DATEPART(year, OMFMC.ORDER_DATE) ='2014'))
)
GROUP BY
OMFMC.BILL_LABEL_NAME,
OMFMC.BILL_FIRST_NAME,
OMFMC.BILL_LAST_NAME,
OMFMC.ORDER_DATE,
OMFMC.CAMPAIGN,
OMFMC.FUND,
OMFMC.PRODUCT_CODE,
OMFMC.BILL_MASTER_CUSTOMER_ID,
OMFMC.BILL_COMPANY_NAME,
OMFMC.BILL_COUNTRY_DESCR,
OMFMC.BILL_LAST_FIRST_NAME,
OMFMC.ORDER_NO,
OMFMC.COMMENTS,
year(OMFMC.ORDER_DATE),
month(OMFMC.ORDER_DATE),
OMFMC.BILL_COUNTRY_CODE,
CMI.NATIONAL_LEVEL2,
CMI.NATIONAL_SINCE_DATE,
CMI.CYCLE_END_DATE,
OMFMC.BILL_FORMATTED_DETAIL + OMFMC.BILL_FORMATTED_ADDRESS,
OMFMC.BILL_PRIMARY_EMAIL_ADDRESS,
OMFMC.BILL_ADDRESS_1,
OMFMC.BILL_CITY,
OMFMC.BILL_STATE,
OMFMC.BILL_POSTAL_CODE,
OMFMC.BILL_ADDRESS_2,
OMFMC.BILL_ADDRESS_3,
OMFMC.BILL_ADDRESS_4,
OFD.IN_TRIBUTE_TO_DESCR,
CUSTOMER_IN_TRIBUTE_TO.LABEL_NAME,
OFD.TRIBUTE_TYPE_CODE,
OMFMC.MARKET_CODE,
OMFMC.BILL_JOB_TITLE,
FT.PAYMENT_AMOUNT
HAVING SUM(FT.PAYMENT_AMOUNT) < 0
Order By BILL_MASTER_CUSTOMER_ID
Вы говорите, что вам нужно получить дубликат записи, тогда почему в вашем желаемом выходе есть только 2 строки с Смитом? Разве вы не должны возвращать 'Smith ............... 02/15/2014'? –
Поскольку у записи smith есть две даты 2014 года, я ищу последнюю дату на 2014 год.В противном случае MAX date –