查询具有相同列名的表

时间:2014-02-14 10:44:56

标签: sql-server-2008 multiple-columns temp-tables

请帮助

我有5个临时表,即#TEMPTABLE,#TotEmp,#TopEnrol,#NotEnrol和#PercEnrol。

TEMPTABLE包含以下内容:
Staff Number | Employee_Name | Home_Branch | Enrolledd | Card | Tested
(已注册 - 员工是否注册的指标 - 1/0)

TotEmp包含以下内容(分支机构中的员工总数)
Home_Branch | Employee

TotEnrol包含以下内容(分支机构中登记的员工总数)
Home_Branch | Enrolled

NotEnrol包含以下内容(未在分支机构注册的员工总数)
Home_Branch | Not_Enrolled

PercEnrol包含以下内容(分支机构中登记员工的百分比)
Home Branch | Percentage

我想做一个显示以下内容的选择 - 并且注册的百分比必须只有90%以下的分支,结果必须按分支分组。

Home_Branch | Enrolled (from TotEnrol) | Employee (TotEmployee) | Not Enrolled (NotEnrol)| Percentage (PercEnrol)

我想从我需要的所有表中选择*并将其放入决赛桌,但显然这个重复的Home_Branch不断弹出,我不知道如何将它们加在一起。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,我相信这对你有用:

SELECT     T1.Home_Branch,
           T3.Enrolled,
           T2.Employee,
           T4.NotEnrolled,
           T5.Percentage
FROM       #TEMPTABLE T1
INNER JOIN #TotEmp T2 ON T1.Home_Branch = T2.Home_Branch
INNER JOIN #TotEnrol T3 ON T1.Home_Branch = T3.Home_Branch
INNER JOIN #NotEnrol T4 ON T1.Home_Branch = T4.Home_Branch
INNER JOIN #PercEnrol T5 ON T1.Home_Branch = T5.Home_Branch
WHERE      T5.Percentage < 90

我在表上使用了别名,因此您可以指定要从中选择的列来自哪个表,这将消除您提到的Home_Branch的5个副本。表别名可以比T1, T2, T3 etc更好地命名,但是你的临时表的名称已经非常短了!

您还提到百分比小于90%,因此WHERE条款。

作为旁注,您可能不需要设置所有这些临时表(除非您被明确告知要这样做),具体取决于您的源数据,您可以使用{{{ 1}},子查询或几个GROUP BY

这会回答你的问题吗?

相关问题