这个网站对我为工作创建的这个数据库非常有帮助,我有很多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字段中的数据来创建列标题,那么这将是很好的,因为只有几种型号的电话,但是如果它们是静态列,那么也可以。
我希望我已经解释了这一点,因为我可以看到这可能是复杂的理解。
如果你有任何建议,请让我知道
谢谢
史蒂夫
发布于 2012-07-26 22:03:00
如果我对问题的理解是正确的,您希望显示每个站点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。如果这是不需要的,请用Nz(Count(SubQry.Handset_Site_Id),0)替换Count(SubQry.Handset_Site_Id)
https://stackoverflow.com/questions/11668936
复制相似问题