这个网站对我正在创作的这个数据库非常有帮助,我有很多VB知识,但很少有SQL。
我正在创建一个cisco IP电话数据库,它记录MAC,连续出版物以及分配给它们的网站ID。
我的经理们现在决定再次更改我的应用程序的目标帖子,现在要求我创建一个以我不知道该怎么做的方式显示数据的表单。
他们现在想要什么以及我希望以某种方式实现的是创建一个sql语句,该语句通过站点ID获取数字手机的数量,然后将该数字与另一个表中的数据进行比较。
以下是我们需要处理的字段:
TABLE 1
Handset_Type
Handset_Site_Id
TABLE 2
Handset_Type
Handset_Site_Id
这就是我想要显示数据的方式
SITE ID | Handset_Type1 | Handset_Type1
Handset_Site_id1 |COUNT TYPE1 FROM T1|COUNT TYPE1 FROM T2
Handset_Site_id2 |COUNT TYPE1 FROM T1|COUNT TYPE1 FROM T2
如果我们可以使用Handset_type字段中的数据来创建列标题,那么这将是很好的,因为只有少数型号的手机,但如果它们是静态列,那么也可以。
我希望我已经解释了这个,因为我可以看到这可能很难理解。
如果您有任何建议,请告诉我
谢谢
史蒂夫
答案 0 :(得分:1)
如果我正确理解了这个问题,您希望为每个站点ID提供两个表中的记录计数,手机类型和源表格作为列标题。
第一步是将表合并到一个表中,创建一个表示手机类型和源表的列:
SELECT Handset_Type & " in T1" as TypeFromT, Handset_Site_Id FROM [Table 1]
UNION ALL
SELECT Handset_Type & " in T2" as TypeFromT, Handset_Site_Id FROM [Table 2]
这将形成交叉表的内部查询。交叉表的语法可能有点棘手,所以我通常在设计视图中构建我的语法。我们将TypeFromT
定义为新的列标题,我们将Handset_Site_Id
用作行分组和计数字段:
TRANSFORM Count(SubQry.Handset_Site_Id) AS SiteIDCount
SELECT SubQry.Handset_Site_Id
FROM (
SELECT Handset_Type & " in T1" as TypeFromT, Handset_Site_Id FROM [Table 1]
UNION ALL
SELECT Handset_Type & " in T2" as TypeFromT, Handset_Site_Id FROM [Table 2]
) AS SubQry
GROUP BY SubQry.Handset_Site_Id
PIVOT SubQry.TypeFromT;
唯一的问题是,如果特定手机类型,源表和站点ID的条目为零,则结果值将为null而不是0.如果不希望这样,请将Count(SubQry.Handset_Site_Id)
替换为{ {1}}