0

カウントが必要なデータを含む2つのテーブルがあります

ログイン履歴とログイン試行

1つは、LoginAttemtpsを含まないLoginHistoryテーブルです。

ログイン履歴の主キーはREF_IDですが、Customer_IDも含まれています。LoginAttemptsテーブルにはCustomer_IDも含まれています

特定のCustomer_idのログイン試行回数とログイン履歴を取得しようとしています。Customer_IDのリストを取得し、それらを一時テーブル「#a」に配置しました。これが、このカウントを取得するために使用しようとしているクエリです。

SELECT COUNT (la.customer_ID) as login_attempts FROM
LOGIN_ATTEMPTS la
JOIN LOGIN_HISTORY lh
on la.Customer_ID = lh.customer_ID
where la.customer_ID in (select Customer_ID from #a)group by la.customer_ID

必要な結果セットは、Customer_IDと、各顧客のログイン試行のカウントとその横の履歴です。私はいくつかの異なる方法を試しましたが、GROUPBYまたはCOUNT構文で常にエラーが発生します。

また、ここのどこかにSUM関数を追加できると思いますが、どのように構造化する必要があるのか​​わかりません。よろしくお願いします!

4

3 に答える 3

2
Select customer_ID
,(Select Count(*) from LOGIN_ATTEMPTS l where l.customer_ID=a#.ID) as [LOGIN_ATTEMPTS]
,(Select Count(*) from LOGIN_HISTORY h where h.customer_ID=a#.ID) as [LOGIN_HISTORY]
from a#

#を使用せずに

Select customer_ID
,(Select Count(*) from LOGIN_ATTEMPTS l where l.customer_ID=a2.ID) as [LOGIN_ATTEMPTS]
,(Select Count(*) from LOGIN_HISTORY h where h.customer_ID=a2.ID) as [LOGIN_HISTORY]
( 
Select Distinct customer_ID from
(
select customer_ID from LOGIN_ATTEMPTS
union
select customer_ID from LOGIN_HISTORY
) a1
)a2
于 2012-11-19T17:21:53.550 に答える
1
SELECT 
  COUNT (*)  AS Attempts, 
   la.Customer_ID 
FROM
  LOGIN_ATTEMPTS la
JOIN 
   LOGIN_HISTORY lh
on la.Customer_ID = lh.customer_ID
where 
   la.customer_ID in (select Customer_ID from #a)
group by 
   la.customer_ID
于 2012-11-19T17:15:18.117 に答える
1

これは、@ bummiの2番目のアプローチのバリエーションであり、追加のサブクエリはありません。

Select customer_ID,
       sum(case when ltype = 'A' then 1 else 0 end) as LoginAttempts,
       sum(case when ltype = 'H' then 1 else 0 end) as LoginHistory
from ((select 'A' as ltype, customer_ID
       from LOGIN_ATTEMPTS
      ) union all
      (select 'H' as ltype, customer_id
       from LOGIN_HISTORY
      ) 
     ) l
where customer_Id in (select Customer_Id from #A)
group by customer_Id
于 2012-11-19T19:13:39.617 に答える