查询显示比 #temp table 中可用的少 1
Query shows 1 less than what's available in the #temp table
假设#temp 有 4 行,输出将是 3(应该是 4),如果它有 1,则输出将是 0。
我不太确定发生了什么。想知道是否有人可以通过查看查询来判断。
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
要求输出:
+-----------+----------+-------------------------+----------------+--------------+-------+
| 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 |
+-----------+----------+-------------------------+----------------+--------------+-------+
实际输出:
+-----------+----------+-------------------------+----------------+--------------+-------+
| 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 |
+-----------+----------+-------------------------+----------------+--------------+-------+
#temp 中的值
Tnn
902054
907616
910019
915919
正确加入:
+-----------+----------+-------------------------+----------------+--------------+-------+
| 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 |
+-----------+----------+-------------------------+----------------+--------------+-------+
正如您的 RIGHT JOIN
查询显示您的
[DBSERV].Tnn.DBO.Tnn_Header AS TH
没有ID = 915919
那一行所以RIGHT JOIN
returnNULL
和INNER JOIN
return少了一行
尝试
SELECT *
FROM [DBSERV].Tnn.DBO.Tnn_Header AS TH
WHERE TH.TnnNumber = 915919
现在您必须检查您是如何创建 #temp
并验证您使用的是与 Tnn_Header
相关的相同 ID
假设#temp 有 4 行,输出将是 3(应该是 4),如果它有 1,则输出将是 0。
我不太确定发生了什么。想知道是否有人可以通过查看查询来判断。
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
要求输出:
+-----------+----------+-------------------------+----------------+--------------+-------+
| 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 |
+-----------+----------+-------------------------+----------------+--------------+-------+
实际输出:
+-----------+----------+-------------------------+----------------+--------------+-------+
| 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 |
+-----------+----------+-------------------------+----------------+--------------+-------+
#temp 中的值
Tnn
902054
907616
910019
915919
正确加入:
+-----------+----------+-------------------------+----------------+--------------+-------+
| 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 |
+-----------+----------+-------------------------+----------------+--------------+-------+
正如您的 RIGHT JOIN
查询显示您的
[DBSERV].Tnn.DBO.Tnn_Header AS TH
没有ID = 915919
那一行所以RIGHT JOIN
returnNULL
和INNER JOIN
return少了一行
尝试
SELECT *
FROM [DBSERV].Tnn.DBO.Tnn_Header AS TH
WHERE TH.TnnNumber = 915919
现在您必须检查您是如何创建 #temp
并验证您使用的是与 Tnn_Header
ID