I am trying to select items that are duplicates based on a set of criteria (e.g. same qty, item + customer). I am trying to achieve this by using a GROUP BY
clause, as below -
SELECT
ST.DATAAREAID
,ST.SALESID
,ST.SALESNAME
,SL.ITEMID
,SL.CUSTACCOUNT
,SL.QTYORDERED
,SL.SALESQTY
,SL.LINEAMOUNT
FROM dbo.SALESLINE AS SL
INNER JOIN dbo.SALESTABLE AS ST
ON SL.SALESID = ST.SALESID
AND SL.DATAAREAID = ST.DATAAREAID
INNER JOIN (
SELECT
STABLE.DATAAREAID
,STABLE.SALESID
,STABLE.SALESNAME
,LINE.ITEMID
,LINE.CUSTACCOUNT
,LINE.QTYORDERED
,LINE.SALESQTY
,LINEAMOUNT
FROM dbo.SALESLINE AS LINE
INNER JOIN dbo.SALESTABLE AS STABLE
ON LINE.SALESID = STABLE.SALESID
AND LINE.DATAAREAID = STABLE.DATAAREAID
GROUP BY
LINE.CUSTACCOUNT
,LINE.QTYORDERED
,LINE.ITEMID
,STABLE.DATAAREAID
HAVING COUNT(*) > 1
) AS B
ON B.DATAAREAID = SL.DATAAREAID
AND B.CUSTACCOUNT = SL.CUSTACCOUNT
AND B.QTYORDERED = SL.QTYORDERED
AND B.ITEMID = SL.ITEMID;
I am getting the
ERROR: Column dbo.SALESTABLE.SALESID is invalid in the select list because it is not contained in either an aggregate function or GROUP BY clause.
I understand what the error is, but I don't want to group by the SALESID
?
ST.SALESID
in the main query, as you already do.ONLY_FULL_GROUP_BY
.