Повторяющиеся результаты в запросе - PullRequest
0 голосов
/ 05 августа 2020

У меня проблема с указанным c SQL запросом Server 2016, сообщающим о повторяющихся строках, и я не уверен, как лучше всего устранить это, не испортив данные. Извините, пожалуйста, за мои любительские навыки написания запросов ? Запрос ниже. У меня возникают проблемы с полем [Тип тендера]. Сделка может иметь несколько тендеров. Например: если вы покупаете что-то в магазине и оплачиваете половину примерно sh и половину кредитной картой, в таблице DT_Payment будут записаны две строки. В идеале, если бы это произошло, [Тип тендера] отображал бы что-то вроде «Несколько», но я был бы счастлив, даже если бы он отображал только первый [Тип тендера]. Буду признателен за любой совет, который вы дадите.

--Return Detail
declare @StoreName varchar(50);
declare @StartDate varchar(50);
declare @EndDate varchar(50);

set @StoreName = '8582 Brevard'
set @StartDate = '03/13/2020'
set @EndDate = '03/13/2020'

select 
       s.name as [Store],
       concat(sf.staff_code, ' - ',sf.Firstname,' ',sf.lastname) as [Associate],
       dtp.cais as [Terminal],
       dtp.transnum as [Trans #],
       P.Product_code as [SKU],
       PN.Short_name as [Description],
       dtp.qty as [Qty],
       dtp.price_sold as [Amt (Ea.)],
       concat(v.VIPCode, ' - ',v.VIPGName,' ',v.VIPName) as [Customer],
       ISNULL(DTPy.tender_code, 'Exchange') as [Tender Type],
       cast(dtp.TS_ID as date) as [Date]
from 
       DT_product DTP 
       LEFT JOIN store s on s.store_code_id = DTP.STORE_CODE_ID
       LEFT JOIN RETAIL_TRANSACTION rt on 
             rt.cais = dtp.Cais 
             and rt.STORE_CODE_ID = dtp.STORE_CODE_ID 
             and rt.TRANSNUM = dtp.Transnum
             and rt.TRANSTYPE = dtp.TRANSTYPE
       LEFT JOIN Staff sf on sf.staff_id = rt.OPERATOR_ID
       LEFT JOIN PRODUCT_NAME PN on PN.Product_ID = DTP.PRODUCT_ID
       LEFT JOIN Product P on P.Product_ID = DTP.Product_ID
       LEFT JOIN VIP v on v.VIPCode_id = rt.VIPCODE_ID
       LEFT JOIN DT_Payment DTPy on 
             DTPy.cais = dtp.Cais 
             and DTPy.STORE_CODE_ID = dtp.RETURN_STORE_ID 
             and DTPy.TRANSNUM = dtp.Transnum
             and DTPy.TRANSTYPE = dtp.TRANSTYPE
where 
       DTP.qty < 0
       and DTP.TRANSTYPE = 'SALE'
       and s.name = @StoreName
       AND format(cast(rt.transdate as date), 'MM/dd/yyyy') >= @StartDate
       and format(cast(rt.transdate as date), 'MM/dd/yyyy') <= @EndDate
Order by
       cast(dtp.ts_id as date),
       [Trans #]
...