Skip to Content
0
Mar 02, 2022 at 08:42 PM

Can get not use select in with a query that uses except

91 Views

I find it odd that I can not use the in clause as the inner query returns the excluded values when ran on its own.

When I run the full query I get this error

Browse mode is invalid for statements containing union, intersect, except operator.

image.png

SQL 2019 SAP 10

SELECT T9.[LineTotal]
FROM OINV T8 INNER JOIN INV1 T9 ON T8.DocEntry = T9.DocEntry 
WHERE T8.[DocNum] IN
(
SELECT Inside.[DocNum]
FROM
(
SELECT T1.[DocNum], 
CASE
WHEN T3.[ZipCodeS] IS NOT NULL AND RIGHT(T3.[ZipCodeS],1) < 'A' AND T3.[CountryS] = 'CA' 
AND LEN(T3.[ZipCodeS]) <= '7' AND LEN(T3.[ZipCodeS]) >= '6' AND LEFT(T3.[ZipCodeS],1) != 'O'
AND T3.[ZipCodeS] >= 'A' THEN T3.[ZipCodeS]
ELSE 
	CASE
		WHEN LEN(T1.[Address2]) > 7 AND LEFT(TRIM(RIGHT(T1.[Address2],7)),1) >= 'A' AND LEFT(TRIM(RIGHT(T1.[Address2],7)),1) != 'O'
AND (SUBSTRING(TRIM(RIGHT(T1.[Address2],7)),4,1) = ' ' OR SUBSTRING(TRIM(RIGHT(T1.[Address2],7)),4,1) = '-')
AND LEFT(TRIM(RIGHT(T1.[Address2],7)),2) != 'RM'
AND RIGHT(T1.[Address2],1) < 'A' THEN TRIM(RIGHT(T1.[Address2],7))
		
WHEN (T2.[MailZipCod] IS NOT NULL OR T2.[MailZipCod] NOT LIKE '' OR T2.[MailZipCod] != '') 
		AND T2.MailCountr = 'CA' AND RIGHT(T2.[MailZipCod],1) < 'A' THEN T2.[MailZipCod]
		ELSE 'Undefined'
	END
END AS 'Province'

FROM INV1 T0 INNER JOIN OINV T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OCRD T2 ON T2.CardCode = T1.CardCode
INNER JOIN INV12 T3 ON T3.DocEntry = T1.DocEntry
WHERE T1.[DocDate] >= '[%0]' AND T1.[DocDate] <= '[%1]'
GROUP BY T1.[DocNum], T3.[ZipCodeS], T2.[MailZipCod], T2.MailCountr, T3.[CountryS],T1.[Address2], TRIM(RIGHT(T1.[Address2],7))


) Inside

EXCEPT  --Union

SELECT Inside.[DocNum]
FROM
(
SELECT T1.[DocNum], 
CASE
WHEN T3.[ZipCodeS] IS NOT NULL AND RIGHT(T3.[ZipCodeS],1) < 'A' AND T3.[CountryS] = 'CA' 
AND LEN(T3.[ZipCodeS]) <= '7' AND LEN(T3.[ZipCodeS]) >= '6' AND LEFT(T3.[ZipCodeS],1) != 'O'
AND T3.[ZipCodeS] >= 'A' THEN T3.[ZipCodeS]
WHEN T4.[ZipCode] IS NOT NULL AND RIGHT(T4.[ZipCode],1) < 'A' AND T4.[Country] = 'CA' 
AND LEN(T4.[ZipCode]) <= '7' AND LEN(T4.[ZipCode]) >= '6' AND LEFT(T4.[ZipCode],1) != 'O'
AND T4.[ZipCode] >= 'A' THEN T4.[ZipCode]
ELSE 
	CASE
		WHEN LEN(T1.[Address2]) > 7 AND LEFT(TRIM(RIGHT(T1.[Address2],7)),1) >= 'A' AND LEFT(TRIM(RIGHT(T1.[Address2],7)),1) != 'O'
AND (SUBSTRING(TRIM(RIGHT(T1.[Address2],7)),4,1) = ' ' OR SUBSTRING(TRIM(RIGHT(T1.[Address2],7)),4,1) = '-')
AND LEFT(TRIM(RIGHT(T1.[Address2],7)),2) != 'RM'
AND RIGHT(T1.[Address2],1) < 'A' THEN TRIM(RIGHT(T1.[Address2],7))
		
WHEN (T2.[MailZipCod] IS NOT NULL OR T2.[MailZipCod] NOT LIKE '' OR T2.[MailZipCod] != '') 
		AND T2.MailCountr = 'CA' AND RIGHT(T2.[MailZipCod],1) < 'A' THEN T2.[MailZipCod]
		ELSE 'Undefined'
	END
END AS 'Province'

FROM INV1 T0 INNER JOIN OINV T1 ON T0.DocEntry = T1.DocEntry
INNER JOIN OCRD T2 ON T2.CardCode = T1.CardCode
INNER JOIN INV12 T3 ON T3.DocEntry = T1.DocEntry
INNER JOIN CRD1 T4 ON T4.CardCode = T2.CardCode
WHERE T1.[DocDate] >= '[%0]' AND T1.[DocDate] <= '[%1]'
AND T4.[AdresType] = 'S' AND T4.[Address] = T1.[ShipToCode] 
GROUP BY T1.[DocNum],
T4.[Country], T4.[ZipCode], T3.[ZipCodeS], T2.[MailZipCod], T2.MailCountr, T3.[CountryS],T1.[Address2], TRIM(RIGHT(T1.[Address2],7))

) Inside
) 

Attachments

image.png (9.9 kB)