簡體   English   中英

MS Sql Server 2005中的計數/選擇查詢

[英]count/select query in MS Sql Server 2005

我有一個舊表,其中包含“主”記錄和相關的詳細記錄。 詳細記錄通過在主鍵“ -nnn”上添加來標識。 我需要找到沒有詳細記錄的主記錄,嘗試了幾種變體,然后將其分解為最簡單的元素。

這有效:

select (select count(*) from dbo.client as cl2 
    where cl2.acct_no like (cl1.acct_no + '-%')) as countx, acct_no 
from dbo.client as cl1

並顯示預期的零或非零結果,具體取決於有多少明細記錄。

但是,當我嘗試使用計數結果僅選擇零記錄的記錄時,如下所示:

select (select count(*) from dbo.client as cl2 
    where cl2.acct_no like (cl1.acct_no + '-%')) as countx, acct_no 
from dbo.client as cl1 
where countx = 0

我收到一個錯誤:“無效的列名'countx'”

我在這里想念什么?

CountX不是命名列。

這可能不是最佳方法,但是包裝整個查詢可能有效。

SELECT CountX, Acct_No
FROM
(
    select (select count(*) from dbo.client as cl2 
        where cl2.acct_no like (cl1.acct_no + '-%')) as countx, acct_no 
    from dbo.client as cli
) As InnerQuery
where countx = 0

編輯

鑒於此,使用聯接而不是嵌套的Select可能更好地實現。

SELECT     cl1.acct_no, Count(*)
FROM       dbo.client cl1 --the master key numbers
INNER JOIN dbo.client cl2 --the sub-keys
           ON cl1.acct_no NOT LIKE '%-%' --No dashes in the MasterKey
           AND cl1.acct_no LIKE (cl2.acct_no + '-%')
GROUP BY   cl1.acct_no

嘗試使用in獲得您想要的東西

 select Acct_No from dbo.client where Acct_No not in 
  (
    select acct_no from dbo.client where acct_no like acct_no + '-%'
  )

暫無
暫無

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

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