【发布时间】:2016-06-15 18:48:51
【问题描述】:
你能解释一下我是如何得到这个特定的表格结果的吗?
我的 4 个查询分别单独获取每一列也在下面。
我不确定这里的方法是将最后 3 个查询嵌套到第一个查询中还是在查询之间使用联合。
请记住,每个信息中的信息并不真正匹配,我认为 Union 或 Union All 不会有用。
派生表会是更好的方法吗?抱歉,我的 SQL 技能相当基础。
我还需要保留“调整” where 子句的能力,因为我的管理员决定稍后排除某些记录(你们 IT 人员会习惯的!)
一些改变 where 子句的能力在解决方案中会很好。
只是为了让你更讨厌;-)
查询表需要看起来像这样
Company Department Total_B Total_R Total_Ret RushJobs
ACME LSD 2 100 24 3
四个查询(分别工作以获取上面的每一列都在这里(我已经留在了相应的 Group By 和 where 子句中,顺便说一下,在第二个查询的情况下,I_Department 确实映射到 Department。
-- Total B count query from B
Select Company,Department, count(*) as Total_B from B
Group by Company,Department
Order BY Company;
--Select h count from h table
Select count(*) as Total_R, I_Department from H
where L ='re-box'
Group By IDepartment
-- Select r count
Select Company,Department,Count (B_Number) AS Total_Ret
from P Inner Join B ON P.Record_Number = B.B_Number
where P.Request_Date > = 'SOMEDATE' and P.Request_Date < = 'SOMEDATERANGE'
Group By Company,Department
-- Select Rush Jobs
Select Company,Department,Count (*) as RushJobs
from Res
Inner Join B on Res.Item_Number = B.B_Number
where Res.Setup_Date >= 'Somedate' and Res.Setup_Date<= 'somedaterange'
and Res.Res_Priority = '1'
Group By Company,Department
决赛桌
<table><TBODY>
<TR>
<TH>Company</TH>
<TH>Department</TH>
<TH>Total_B</TH>
<TH>Total_R </TH>
<TH>Total_Ret</TH>
<TH>RushJobs</TH></TR>
<TR>
<TD>ACME</TD>
<TD>LSD</TD>
<TD>100</TD>
<TD>2</TD>
<TD>4</TD>
<TD>1</TD></TR></TBODY></table>
【问题讨论】:
-
完全不清楚您要做什么。这是一个很好的起点。 spaghettidba.com/2015/04/24/…
-
另外,您应该阅读这篇文章,因为您的第一个查询使用的是非常古老的连接样式。 sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/…
-
H 与 B 有什么关系?我在 H 上没有看到任何公司,但我确实看到了部门......所以 Total_R 会为 B 中的每个公司重复吗?
标签: sql-server database sql-server-2008