私が直面している特定の問題を解決しようとしています。謝罪私がそれを間違った方法で表現しなければ、私はStackoverflowの新人です。銀行ごとのユーザーの1回の出現を取得してカウントする
ユーザーのユニークな数、作成されたアカウントの数、アクティブ化されたアカウントの数、まだアクティブ化されていないアカウントの数を取得したレポートがあります。
私はこれを得ることができました(作成されたアカウントの数、アクティブ化されたアカウントの数、まだアクティブ化されていないアカウントの数)。
ここに私のスクリプトスニペットがあります。
SELECT Bank,Users, Added_Accounts FROM (
select BANK_NAME as Bank, COUNT(DISTINCT USER_ID) as 'Users',
COUNT(DISTINCT USER_ID+BANK_NAME+ACCOUNT_NUMBER) as Added_Accounts
from MA
where MOBILE_PROFILE_CREATION between @datefrom and @dateto
and USER_ID IS NOT NULL AND USER_ID !='' and Bank_Name NOT LIKE '%XXX%'
group by BANK_NAME
UNION ALL
select 'Total' as Bank, COUNT(DISTINCT USER_ID+BANK_NAME) as 'Users',
COUNT(DISTINCT USER_ID+BANK_NAME+ACCOUNT_NUMBER) as Added_Accounts
from MA
where MOBILE_PROFILE_CREATION between @datefrom and @dateto
and USER_ID IS NOT NULL AND USER_ID !='' and Bank_Name NOT LIKE '%XXX%'
) as WeekData_UsersByBanks
これは、銀行ごとのユーザー数を取得しますが、私が達成したいのは、ユーザーの最初の出現のみを取得してカウントすることです。ユーザーが3つの銀行に口座を持っている場合は、最初のオカレンスだけを取得してカウントします。
どのようにこれを達成することができますか?
ありがとうございます。
UPDATE
DDL
CREATE TABLE [dbo].[MA](
[USER_ID] [nvarchar](255) NULL,
[ACCOUNT_NUMBER] [nvarchar](255) NULL,
[BANK_CODE] [nvarchar](255) NULL,
[BANK_NAME] [nvarchar](255) NULL,
[MOBILEPROFILEACTIVE] [float] NULL,
[MOBILE_PROFILE_CREATION] [nvarchar](255) NULL,
[USERSTATUS] [nvarchar](255) NULL
) ON [PRIMARY]
INSERT INTO MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','009****220','63','Bank A','1','2017-08-07 00:00','N')
insert into MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','005****017','63','Bank A','0','2017-08-07 00:00','N')
insert into MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','007****559','63','Bank A','0','2017-08-07 00:00','N')
insert into MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','302****187','76','Bank E','1','2017-08-07 00:00','N')
insert into MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','207****421','33','Bank F','0','2017-08-07 00:00','N')
insert into MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','005****047','63','Bank A','0','2017-09-09 00:00','N')
insert into MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','237****275','50','Bank B','0','2017-09-09 00:00','N')
insert into MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','208****712','57','Bank G','1','2017-09-09 00:00','N')
insert into MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','075****022','214','Bank D','1','2017-08-03 00:00','N')
insert into MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','601****999','70','Bank C','1','2017-03-15 00:00','N')
insert into MA ([USER_ID],[ACCOUNT_NUMBER],[BANK_CODE],[BANK_NAME],
[MOBILEPROFILEACTIVE],[MOBILE_PROFILE_CREATION],[USERSTATUS]) VALUES
('[email protected]','204****889','33','Bank F','0','2017-04-21 00:00','N')
は、ここで私が得た結果のSQL Fiddleです。フィドルで
、ユーザー[email protected]は3つのバンク(バンクA、バンクEおよび銀行F)
ではなく、すべての銀行のカウントに表示されてユーザーにアカウントを持って、私は、ユーザーが表示されることを期待します銀行の最初の発生時に。
これがより明確になることを希望します。
を参照してください?また、期待した結果を含めることができますか? [T-SQL質問を投稿する方法](http://www.sqlservercentral.com/articles/Best+Practices/61537/) – Larnu
合計行を達成しようとすると、GROUP BY CUBE(columns_here)を使用することを検討してください。 組合なしで書かれている。 –
@ jerboy、あなたの出力がどのように見えるかはまだ分かりません。あなたはダミーのサンプル出力を表示できますか? – suresubs