So let's say #temp has 4 rows, the output will be 3(should be 4), if it has 1, then output will be 0.
I'm not quite sure what's going on. Wondering if anyone can tell by looking at the query.
SELECT TH.TnnNumber,
CASE WHEN COUNT(DISTINCT TL.DiscountCodeID) > 1 THEN 'Varies, View Tnn' ELSE CAST(MAX(DC.Value) AS NVARCHAR(50)) END AS Discount,
CASE WHEN TS.SpinID > 4 THEN 'Has Specifics, View Tnn' ELSE TS.Value END AS Spin,
CASE WHEN COUNT(DISTINCT TL.Commission_HMM) > 1 THEN 'Varies, View Tnn' ELSE CAST(MAX(ISNULL(str(TL.Commission_HMM, 12), 'Default Comm')) AS NVARCHAR(50)) END AS Commission_HMM,
CASE WHEN COUNT(DISTINCT TL.Commission) > 1 THEN 'Varies, View Tnn' ELSE CAST(MAX(ISNULL(str(TL.Commission, 12), 'Default Comm')) AS NVARCHAR(50)) END AS Commission,
TL.TnnID
FROM [DBSERV].Tnn.DBO.Tnn_Header AS TH
LEFT JOIN [DBSERV].Tnn.DBO.Tnn_LINE AS TL
ON TH.TnnID = TL.TnnID
LEFT JOIN [DBSERV].Tnn.DBO.Tnn_Spin AS TS
ON TH.SpinID = TS.SpinID
LEFT JOIN [DBSERV].Tnn.DBO.Tnn_DiscountCode AS DC
ON TL.DiscountCodeID = DC.DiscountCodeID
INNER JOIN #temp AS T
ON T.Tnn = TH.TnnNumber
GROUP BY TH.TnnNumber,
TS.SpinID,
TS.Value,
TL.TnnID
Required output:
+-----------+----------+-------------------------+----------------+--------------+-------+
| TnnNumber | Discount | Spin | Commission_HMM | Commission | TnnID |
+-----------+----------+-------------------------+----------------+--------------+-------+
| 902054 | 50-20-9 | Has Specifics, View Tnn | Default Comm | Default Comm | 5855 |
| 907616 | 50-20-20 | Half | Default Comm | 2 | 6111 |
| 910019 | 50-20-9 | Half | Default Comm | Default Comm | 7015 |
| 915919 | 50-20-9 | Half | Default Comm | Default Comm | 7015 |
+-----------+----------+-------------------------+----------------+--------------+-------+
Actual output:
+-----------+----------+-------------------------+----------------+--------------+-------+
| TnnNumber | Discount | Spin | Commission_HMM | Commission | TnnID |
+-----------+----------+-------------------------+----------------+--------------+-------+
| 902054 | 50-20-9 | Has Specifics, View Tnn | Default Comm | Default Comm | 5855 |
| 907616 | 50-20-20 | Half | Default Comm | 2 | 6111 |
| 910019 | 50-20-9 | Half | Default Comm | Default Comm | 7015 |
+-----------+----------+-------------------------+----------------+--------------+-------+
Values in #temp
Tnn
902054
907616
910019
915919
Right join:
+-----------+----------+-------------------------+----------------+--------------+-------+
| TnnNumber | Discount | Spin | Commission_HMM | Commission | TnnID |
+-----------+----------+-------------------------+----------------+--------------+-------+
| NULL | NULL | NULL | Default Comm | Default Comm | NULL |
| 902054 | 50-20-9 | Has Specifics, View Tnn | Default Comm | Default Comm | 5855 |
| 907616 | 50-20-20 | Half | Default Comm | 2 | 6111 |
| 910019 | 50-20-9 | Half | Default Comm | Default Comm | 7015 |
+-----------+----------+-------------------------+----------------+--------------+-------+
As your RIGHT JOIN
query show your
[DBSERV].Tnn.DBO.Tnn_Header AS TH
Doesn't have the row with ID = 915919
that is why RIGHT JOIN
return NULL
and INNER JOIN
return a row less
try
SELECT *
FROM [DBSERV].Tnn.DBO.Tnn_Header AS TH
WHERE TH.TnnNumber = 915919
Now you have to check how are you creating #temp
and validate you are using the same ID
related to Tnn_Header