Я пытаюсь добавить в свой существующий запрос что-то, что отфильтровывало бы любые продажи / покупки, которые происходят более одного раза, только принимая минимальное значение даты.
Я пытался использовать функцию MIN ()и оператор GROUP BY, но это не позволяет мне выбрать другие нужные мне столбцы, и это, как предполагается, ВИД, который я использую в POWER BI.
РЕДАКТИРОВАТЬ: Хорошо, я думаю, я понял этоиз.Я просто использую функцию MIN () и предложение GROUP BY, однако раньше я не использовал предложение GROUP BY и боюсь, что оно отфильтрует слишком много строк.Мне нужны все столбцы, которые перечислены ниже.Я также добавил образцы данных для игры.Мне нужно отфильтровать «дубликаты» ContractPurchaseID, посмотрев на PaymentDue и выбрав только первый.В чем опасность использования GroupBY?
Пример данных:
PurchaseLogID StoreID UserID ContractPurchaseID PackageName PurchaseDate PaymentDue PurchaseAmount EverGreenPrice
118849930 7306 48938416 7825299 Monthly Unlimited 2/11/2019 2/11/2019 84 109
118849935 7306 48938416 7825299 Monthly Unlimited 2/11/2019 3/11/2019 109 109
118404876 6700 22920416 6610879 Monthly Unlimited 3/1/2019 3/1/2019 119 119
118746691 6700 23081863 6240459 Monthly Unlimited 3/1/2019 3/1/2019 159 159
118271837 7308 48668745 7777689 8 Pack Monthly 3/1/2019 3/1/2019 89 89
118271747 7308 48668763 7777679 8 Pack Monthly 3/1/2019 3/1/2019 89 89
Запрос:
SELECT P.PurchaseLogID,
P.StoreID,
P.UserID,
P.ContractPurchaseID,
P.PackageName,
P.PurchaseDate,
P.PaymentDue,
P.PurchaseAmount,
C.EvergreenPrice
FROM PurchaseLog AS P
INNER JOIN ContractPurchases AS C
ON P.ContractPurchaseID = C.ContractPurchaseID
INNER JOIN Users AS U
ON C.UserID = U.UserID
WHERE P.PaymentDue >= DATEADD(Day, -1, getdate())
AND P.PaymentDue <= DATEADD(Day, +30, getdate())
AND P.Deleted IS NULL
AND (P.PaymentDue < C.CancelOn OR C.CancelOn IS NULL)
AND P.PurchaseAmount <> '0'
AND (haspastdue IS NULL OR haspastdue = 0)