簡體   English   中英

如何編寫 SQL 查詢來查找與特定值相關聯的帳戶數量?

[英]How to write a SQL query to find number of accounts tied to a particular value?

我想找到與特定成員資格字段相關聯的公司數量。 這有點復雜,因為許多不同的公司可以屬於同一個會員編號。 公司由 6 個字符的字符串(帳號)標識,但在此表中,它們的長度可以是 6 或 8 個字符。 我只對 6 個字符或 8 個字符的帳戶感興趣,其中最后兩個字符是 00。更糟糕的是,此表中有許多重復的帳號——該字段不是唯一的。

成員資格字段是數字,但也可以為空。 我只關心非零、非空的會員編號。 不幸的是,無論用戶輸入空值、零還是實際數字都是隨機的。

最終結果是顯示所有會員編號,並計算出有多少個帳號所屬。

所有信息都來自同一個表。 在許多其他字段中,每一行都有一個帳號和會員編號。

把它想象成一個特許經營情況。 讓我們假設 Burger Joint 是我們的客戶,所以我們有他們的會員號。 然后,所有不同賬號的加盟商,使用會員號與我們做生意。 我試圖找出每個會員資格完成了多少真正的業務。

我意識到這可能是一個多步驟的過程。 以下是我嘗試找回正確帳號類型的嘗試。 不過,AQT 似乎並不喜歡它。

where (length(account) > 6 and substring(account, (length(account) -2), length(account)) ='00')

公司由 6 個字符的字符串(帳號)標識,但在此表中,它們的長度可以是 6 或 8 個字符。 我只對 6 個字符或最后兩個字符為 00 的 8 個字符的帳戶感興趣

WHERE (accountnumber LIKE '______' or accountnumber LIKE '______00')

我只關心非零、非空的會員編號

AND membershipnumber > 0 

您不需要專門檢查空成員編號; 要求數字大於 0 隱式排除空值

最終結果是顯示所有會員編號,並計算出有多少個帳號所屬

SELECT membershipnumber, COUNT(DISTINCT accountnumber) as count_unique_accs
FROM ...
WHERE ...
GROUP BY membershipnumber

accountnumber 是否重復無關緊要:count distinct 只給出唯一的出現次數。 如果 123456 和 12345600 是相同的帳號,則計數內的子串

編輯:

最后一句我的意思是:

 COUNT(DISTINCT SUBSTRING(accountnumber, 1, 6)) --sql server syntax 
where membership is not null and membership <> 0 and account is not null 
  and (length(account) = 6
  or (length(account) = 8 and right(account,2) = '00'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM