0

このサイトは、私が仕事のために作成しているこのデータベースで非常に役立ちました。私はVBの知識はたくさんありますが、SQLはほとんどありません。

MAC、シリアル、およびそれらが割り当てられているサイトIDを記録するCiscoIPPhoneのデータベースを作成しています。

私のマネージャーは、アプリケーションの目標の投稿をもう一度変更することを決定し、方法がわからない方法でデータを表示するフォームを作成するように求めています。

彼らが今望んでいること、そして私が何とかして達成したいと思っていることは、サイトIDごとに受話器の数を取得するSQLステートメントを作成し、その数を別のテーブルのデータと比較することです。

使用する必要のあるフィールドは次のとおりです。

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フィールドのデータを使用して列見出しを作成できる場合は、電話のモデルが数個しかないため、これはすばらしいことですが、静的列の場合も問題ありません。

これは理解するのが複雑かもしれないので、私はこれを大丈夫に説明したと思います。

何か提案があれば教えてください

ありがとうございました

スティーブ

4

1 に答える 1

1

私が質問を正しく理解していれば、サイト ID ごとに、ハンドセット タイプとソース テーブルを列見出しとして、両方のテーブルからのレコード数を提示してください。

最初のステップは、テーブルを 1 つのテーブルにマージし、ハンドセット タイプとソース テーブルを表す列を作成することです。

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 のエントリがゼロの場合、結果の値が 0 ではなく null になることです。これが望ましくない場合はCount(SubQry.Handset_Site_Id)Nz(Count(SubQry.Handset_Site_Id),0)

于 2012-07-26T14:02:59.810 に答える