select 'Buyer' as Type,
Buyer_ID ID,
Count(*) OrderCount,
Min(OpenDate) FirstOrder,
Max(OpenDate) LastOrder
from Orders
where OpenDate between @StartDate and @EndDate
group by Buyer_ID
union
select 'Seller',
Seller_ID,
Count(*),
Min(OpenDate) FirstOrder,
Max(OpenDate) LastOrder
from Orders
where OpenDate between @StartDate and @EndDate
group by Seller_ID
[편집] 예, 제 답변을 수락하는 약간의 뺨, 다음 수락을 취소하고 질문을 변경하십시오! 어쨌든 다음을 시도해보십시오.
;with BuyerFirst (Buyer_ID, RowNum, BuyerCount, OrderID, OpenDate)
As
(select Buyer_ID,
ROW_NUMBER() over (partition by Buyer_ID order by OpenDate, OrderID) as RowNum,
count(*) over (partition by Buyer_ID) As BuyerCount,
OrderID,
OpenDate
from Orders
where OpenDate between @StartDate and @EndDate),
BuyerLast (Buyer_ID, RowNum, OrderID, OpenDate)
As
(select Buyer_ID,
ROW_NUMBER() over (partition by Buyer_ID order by OpenDate Desc, OrderID Desc) as RowNum,
OrderID,
OpenDate
from Orders
where OpenDate between @StartDate and @EndDate),
SellerFirst (Seller_ID, RowNum, SellerCount, OrderID, OpenDate)
As
(select Seller_ID,
ROW_NUMBER() over (partition by Seller_ID order by OpenDate, OrderID) as RowNum,
count(*) over (partition by Buyer_ID) As SellerCount,
OrderID,
OpenDate
from Orders
where OpenDate between @StartDate and @EndDate),
SellerLast (Seller_ID, RowNum, OrderID, OpenDate)
As
(select Seller_ID,
ROW_NUMBER() over (partition by Seller_ID order by OpenDate Desc, OrderID Desc) as RowNum,
OrderID,
OpenDate
from Orders
where OpenDate between @StartDate and @EndDate)
select c.*,
bf.BuyerCount,
bf.OpenDate As BuyerFirstOrderDate,
bf.OrderID As BuyerFirstOrderID,
bl.OpenDate As BuyerLastOrderDate,
bl.OrderID As BuyerLastOrderID,
sf.SellerCount,
sf.OpenDate As SellerFirstOrderDate,
sf.OrderID As SellerFirstOrderID,
sl.OpenDate As SellerLastOrderDate,
sl.OrderID As SellerLastOrderID
from Customers c
left join BuyerFirst bf on c.CustomerID = bf.Buyer_ID and bf.RowNum = 1
left join SellerFirst sf on c.CustomerID = sf.Seller_ID and sf.RowNum = 1
left join BuyerLast bl on c.CustomerID = bl.Buyer_ID and bl.RowNum = 1
left join SellerLast sl on c.CustomerID = sl.Seller_ID and sl.RowNum = 1
고마워요! 여기에 내 행운을 빕니다. 그러나 고객 주문서에서 고객의 세부 정보를 이름처럼 가져 와서 실제 주문 번호를 포함 할 수있는 방법이 있습니까? Customer_Table : Customer_ID, 이름, 이메일, 전화? –
결과가 합집합이고 동일한 customer_id에 구매자와 판매자가 모두 입력되어있을 수 있으므로 어떻게 정보를 동일한 행에 넣을 수 있습니까? 나의 첫 번째 시도는 Union의 결과로부터 임시 테이블을 만드는 것이었지만 결과 테이블의 각 Customer_ID에 대해 동일한 행에 Buyer OrderCount, Seller OrderCount 등을 표시하는 방법에 대해 공백을 표시합니다. –
내 원래의 대답이 내 문제에 대한 매우 웅변적인 해결책이었던 Skippy에게 가장 진실한 사과. 이것은이 포럼에 게시 된 첫 번째 글이며 원래 질문을 개선하는 방법을 잘 모르고있었습니다. –