我已经阅读了近十几个类似的网站问题,但我不认为我的具体案例覆盖了任何地方。我不是一个dba,这仅仅是我自愿提供的一个支持项目,因为我知道更多的SQL比其他任何人都多,所以如果有人告诉我这个查询是一场灾难,我不会认真对待它。 :-)加入两个具有重叠值的sql查询以添加第三列
这是我的查询:
SELECT COUNT(a.issue_type_id) as DistinctIssues, b.issue_type_name, c.subissue_type_name, null AS DistinctTickets
FROM [somedb].[dbo].[wh_task] AS a
INNER JOIN [somedb].[dbo].[wh_issue_type] AS b ON a.issue_type_id = b.issue_type_id
INNER JOIN [somedb].[dbo].[wh_subissue_type] AS c ON a.subissue_type_id = c.subissue_type_id
WHERE a.[create_time] between '11/01/12' AND '01/31/13'
AND a.[account_id] = 123456
AND a.[account_contact_id] is not null
GROUP BY b.issue_type_name, c.subissue_type_name
UNION
SELECT null as DistinctIssues, b.issue_type_name, c.subissue_type_name, COUNT(a.issue_type_id) as DistinctTickets
FROM [somedb].[dbo].[wh_task] AS a
INNER JOIN [somedb].[dbo].[wh_issue_type] AS b ON a.issue_type_id = b.issue_type_id
INNER JOIN [somedb].[dbo].[wh_subissue_type] AS c ON a.subissue_type_id = c.subissue_type_id
WHERE a.[create_time] between '11/01/12' AND '01/31/13'
AND a.[account_id] = 123456
GROUP BY b.issue_type_name, c.subissue_type_name
而结果是这样的。
DistinctIssues issue_type_name subissue_type_name DistinctTickets
NULL Storage EMC 45
NULL Storage HP 2
NULL Symantec Anti Virus 1
NULL Symantec Backup Exec 4
NULL Virtualization Environmental 1
NULL Virtualization Network 5
1 Microsoft Server 2003 NULL
1 Microsoft Windows 7 NULL
1 Network Performance NULL
1 Virtualization Environmental NULL
2 Exchange Database NULL
我敢打赌,你可以猜出我想从这里做什么。 我按照两种问题类型进行分组,并且我希望所有门票的计数以及这些门票的子集计数。我的数据库是MS SQL服务器(2008,我相信)。我只有访问意见,为什么值得。
我读过后几次,我不确定你想要做什么。您提供了查询的输出,但有帮助的是显示您希望退出查询的输出。此外,它看起来像您的顶级查询是您的底部查询的子集;这是故意的吗?它看起来像顶部查询将具有与底部查询相同的结果减去具有空值Account_Contact_ID值的记录。我仍然不确定我是否理解这里的目的。 –
对不起,我会尽量在将来更加清晰,并且我还会包含所需的结果。 – AlsoKnownAsJazz