Sql server lso也试图移动其他过滤器,但事情是一样的。我懂了。你能分享一下你正在谈论的结果集吗?(和它应该是不同的)当然我已经在oringal post.hmmmm以图片的形式发布了它。好啊这就是我从你的描述中理解的。我不相信左连接是问题所在,那么:)。有没有可能它
Sql server lso也试图移动其他过滤器,但事情是一样的。我懂了。你能分享一下你正在谈论的结果集吗?(和它应该是不同的)当然我已经在oringal post.hmmmm以图片的形式发布了它。好啊这就是我从你的描述中理解的。我不相信左连接是问题所在,那么:)。有没有可能它,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,lso也试图移动其他过滤器,但事情是一样的。我懂了。你能分享一下你正在谈论的结果集吗?(和它应该是不同的)当然我已经在oringal post.hmmmm以图片的形式发布了它。好啊这就是我从你的描述中理解的。我不相信左连接是问题所在,那么:)。有没有可能它们也不在第一部分子查询中?我会在我的答案中加入基本的左连接示例,这样你就知道我是从哪里来的了。我明白了,对双表连接我忘记了这个概念。很明显,我没有正确地测试你的原始答案。谢谢你的帮助。它确实正确地工作。 SELECT SC.Service_Co
lso也试图移动其他过滤器,但事情是一样的。我懂了。你能分享一下你正在谈论的结果集吗?(和它应该是不同的)当然我已经在oringal post.hmmmm以图片的形式发布了它。好啊这就是我从你的描述中理解的。我不相信左连接是问题所在,那么:)。有没有可能它们也不在第一部分子查询中?我会在我的答案中加入基本的左连接示例,这样你就知道我是从哪里来的了。我明白了,对双表连接我忘记了这个概念。很明显,我没有正确地测试你的原始答案。谢谢你的帮助。它确实正确地工作。
SELECT SC.Service_Company_Code
, SSPM.Mapping
, COUNT(T.Service_Ticket_Id) AS 'Ticket_Count'
FROM SV_Service_Ticket T
INNER JOIN KS_SedonaSync_Problem SSP ON T.Sub_Problem_Id = SSP.Problem_Id
RIGHT JOIN KS_SedonaSync_Problem_Sub_Mapping SSPM ON SSP.SedonaSync_Problem_Sub_Mapping_Id = SSPM.SedonaSync_Problem_Sub_Mapping_Id
RIGHT JOIN SV_Service_Company SC ON T.Service_Company_Id = SC.Service_Company_Id
WHERE SC.Vendor_Id = 1
AND SC.Inactive = 'N'
AND SC.Service_Company_Id <> 1
AND SSPM.Inactive = 'N'
AND T.Ticket_Status <> 'CL'
GROUP BY SC.Service_Company_Code, SSPM.Mapping
ORDER BY SC.Service_Company_Code, SSPM.Mapping
SELECT Q.Service_Company_Code
, Q.Mapping
, COUNT(T.Service_Ticket_Id) AS 'Ticket_Count'
FROM (SELECT SC.Service_Company_Id, SC.Service_Company_Code, SSP.Problem_Id, SSPM.SedonaSync_Problem_Sub_Mapping_Id, SSPM.Mapping
FROM SV_Service_Company SC
FULL OUTER JOIN KS_SedonaSync_Problem_Sub_Mapping SSPM ON 1=1
LEFT JOIN KS_SedonaSync_Problem SSP ON SSPM.SedonaSync_Problem_Sub_Mapping_Id = SSP.SedonaSync_Problem_Sub_Mapping_Id
WHERE SC.Vendor_Id = 1
AND SC.Inactive = 'N'
AND SC.Service_Company_Id <> 1
AND SSPM.Inactive = 'N'
) Q
LEFT JOIN SV_Service_Ticket T ON T.Sub_Problem_Id = Q.Problem_Id AND T.Service_Company_Id = Q.Service_Company_Id
WHERE T.Ticket_Status <> 'CL'
GROUP BY Q.Service_Company_Code, Q.Mapping
ORDER BY Q.Service_Company_Code, Q.Mapping
SELECT SC.Service_Company_Code
, SSPM.Mapping
, COUNT(T.Service_Ticket_Id) AS 'Ticket_Count'
FROM SV_Service_Company SC
CROSS JOIN KS_SedonaSync_Problem SSP
INNER JOIN KS_SedonaSync_Problem_Sub_Mapping SSPM ON SSP.SedonaSync_Problem_Sub_Mapping_Id = SSPM.SedonaSync_Problem_Sub_Mapping_Id
AND SC.Vendor_Id = 1
AND SC.Inactive = 'N'
AND SC.Service_Company_Id <> 1
LEFT JOIN SV_Service_Ticket T ON T.Sub_Problem_Id = SSP.Problem_Id
AND T.Service_Company_Id = SC.Service_Company_Id
AND T.Ticket_Status <> 'CL'
WHERE SSPM.Inactive = 'N'
GROUP BY SC.Service_Company_Code, SSPM.Mapping
ORDER BY SC.Service_Company_Code, SSPM.Mapping
SELECT SC.Service_Company_Code
, SSPM.Mapping
, COUNT(T.Service_Ticket_Id) AS [Ticket_Count]
FROM KS_SedonaSync_Problem SSP
RIGHT JOIN SV_Service_Ticket T
ON T.Sub_Problem_Id = SSP.Problem_Id
RIGHT JOIN KS_SedonaSync_Problem_Sub_Mapping SSPM
ON SSP.SedonaSync_Problem_Sub_Mapping_Id = SSPM.SedonaSync_Problem_Sub_Mapping_Id
RIGHT JOIN SV_Service_Company SC
ON T.Service_Company_Id = SC.Service_Company_Id
WHERE SC.Vendor_Id = 1
AND SC.Inactive = 'N'
AND SC.Service_Company_Id <> 1
AND SSPM.Inactive = 'N'
AND T.Ticket_Status <> 'CL'
GROUP BY SC.Service_Company_Code, SSPM.Mapping
ORDER BY SC.Service_Company_Code, SSPM.Mapping
T.Ticket_Status <> 'CL'
LEFT JOIN SV_Service_Ticket T ON T.Sub_Problem_Id = Q.Problem_Id AND T.Service_Company_Id = Q.Service_Company_Id and T.Ticket_Status <> 'CL'
if object_id('tempdb..#tempItems') is not null
drop table #tempItems;
create table #tempItems (
id int primary key
, category varchar(100)
, subCategory varchar(100)
)
;
insert into #tempItems (id, category, subCategory)
values (1, 'First', 'subA');
insert into #tempItems (id, category, subCategory)
values (2, 'First', 'subB');
insert into #tempItems (id, category, subCategory)
values (3, 'Second', 'subA');
insert into #tempItems (id, category, subCategory)
values (4, 'NotFound', 'subNotFound');
---------------------------------------------------------
if object_id('tempdb..#tempCounts') is not null
drop table #tempCounts;
create table #tempCounts (
id int primary key
, itemId int
)
;
insert into #tempCounts (id, itemId)
values (1, 1);
insert into #tempCounts (id, itemId)
values (2, 2);
insert into #tempCounts (id, itemId)
values (3, 3);
insert into #tempCounts (id, itemId)
values (4, 3);
----------------------------------------------------------
select
items.category
,items.subcategory
, count(counts.id) as count
from
#tempItems items
left join #tempCounts counts on items.id = counts.itemid
group by items.category, items.subcategory
order by items.category, items.subcategory
SELECT Q.Service_Company_Code
, Q.Mapping
, COUNT(T.Service_Ticket_Id) AS 'Ticket_Count'
FROM (
SELECT SC.Service_Company_Id, SC.Service_Company_Code, SSP.Problem_Id, SSPM.SedonaSync_Problem_Sub_Mapping_Id, SSPM.Mapping
FROM SV_Service_Company SC
CROSS JOIN KS_SedonaSync_Problem_Sub_Mapping SSPM
LEFT JOIN KS_SedonaSync_Problem SSP ON SSPM.SedonaSync_Problem_Sub_Mapping_Id = SSP.SedonaSync_Problem_Sub_Mapping_Id
WHERE SC.Vendor_Id = 1
AND SC.Inactive = 'N'
AND SC.Service_Company_Id <> 1
AND SSPM.Inactive = 'N'
) Q
LEFT JOIN SV_Service_Ticket T ON T.Sub_Problem_Id = Q.Problem_Id AND T.Service_Company_Id = Q.Service_Company_Id AND T.Ticket_Status <> 'CL'
GROUP BY Q.Service_Company_Code, Q.Mapping
ORDER BY Q.Service_Company_Code, Q.Mapping