내 SQL 쿼리가 여러 테이블에 조인되므로 여러 결과가 표시됩니다. SELECT DISTINCT에 대해 알고 있지만 필드 ('Account.Name') 중 하나가 다른 경우가 있으므로이 레코드를 새 행으로 처리합니다. 어떤 아이디어? 여기 내 SQL은 다음과 같습니다.SQL 도움말 - 조인에서 중복 반환
SELECT DISTINCT
d.ID, ISNULL(d.OnHold, 0) AS 'OnHold', d.OnHoldReason AS 'On Hold Reason', d.LegacyID AS 'Consignment#', d.IntConNo AS 'Consignment Ref',
CASE WHEN JobType = 'O' THEN 'Outward' ELSE 'Collection' END AS 'Job Type', d.TripDate AS 'Delivery Date', d.DeliveryTown AS 'Delivery Town',
d.DeliveryPostcode AS 'Delivery Postcode', d.VehicleReg AS 'Vehicle Reg', d.RequiredCollectionDate AS 'Req. Collection Date',
d.VehicleReg AS 'Vehicle Registration', CASE WHEN d .DeliveryStatus = 2 THEN 'OK' END AS 'Delivery Status', d.ItemsignedBy AS 'POD Signed By',
d.BaseRate AS 'Base Rate', d.FuelSurcharge AS 'Fuel Surcharge', d.AdditionalCharges AS 'Additional Charges',
d.BaseRate + d.FuelSurcharge + d.AdditionalCharges AS 'Value', CASE WHEN InvoiceNumber IS NULL THEN CONVERT(bit, 0) ELSE CONVERT(bit, 1)
END AS Tagged, CASE WHEN di.Total = di.Delivered THEN 'Recieved' ELSE 'Not Recieved' END AS 'Items', Account.Name
FROM Deliveries AS d LEFT OUTER JOIN
(SELECT Consignment, COUNT(*) AS Total, COUNT(CASE WHEN Status = 2 THEN 1 END) AS Delivered
FROM Items
GROUP BY Consignment) AS di ON d.ID = di.Consignment INNER JOIN
Account ON d.Customer = Account.InvoiceAccount
WHERE (d.InvoiceNumber IS NULL) AND (d.TripDate > 29/11/2010)
ORDER BY 'Consignment#'
Account.Name이 다른 경우 새 레코드입니다. . 나는 당신이 뭘 하려는지 명확하지 않다. Account.Name의 모든 항목을보고 싶지 않으면 반환하거나 하위 선택 또는 sproc을 사용하여 모든 Account.Name 인스턴스와 함께 (즉 연결된) 집계 필드를 생성하지 마십시오. – Lazarus