Подумайте об использовании оконного предложения COUNT
. Поскольку у меня нет всех подробностей о вашей ситуации, я включил весь тестовый пример. Часть, о которой вы заботитесь - это SELECT
внизу.
DECLARE @Cust TABLE (
CustID INT
)
DECLARE @Ord TABLE (
OrdID INT IDENTITY (1,1),
CustID INT,
Qty INT,
Price MONEY
)
INSERT INTO @Cust
VALUES
(1),
(2),
(3),
(4)
INSERT INTO @Ord
VALUES
(1, 5, 5.55),
(2,3,3.33),
(2,4,3.22),
(3,4,1.23),
(3,5,5.66),
(3,7,1.22)
DECLARE @MinimumOrders INT = 0
SELECT
C.CustID,
CASE
WHEN COUNT(O.OrdID) OVER(PARTITION BY C.CustID) > @MinimumOrders THEN COUNT(O.OrdID) OVER(PARTITION BY C.CustID)
ELSE NULL
END AS Orders,
O.Qty,
O.Price
FROM
@Cust C
LEFT JOIN @Ord O
ON C.CustID = O.CustID