簡體   English   中英

SQL Server查詢不同

[英]SQL Server query distinct

我正在嘗試在SQL Server 2008中進行查詢。這是我的表的結構

Recno     ClientNo      ServiceNo
---------------------------------
1234      17            27
2345      19            34
3456      20            33
4567      17            34

但是,我嘗試選擇RecNoRecNo不同的ClientNo過濾,因此對於某些客戶端(例如17號客戶端)-它們具有1個以上的條目,我嘗試僅對該客戶端進行一次計數。 所以基本上,看這張表,我只應該看到3個RecNo,因為只有3個不同的客戶。 請幫忙

Select RecNo, Count(ClientNo)
from TblA
where Count(clientNo)<2

像這樣嗎

編輯:

RecNo的值RecNo ,我只需要有准確的記錄數即可。 在這種情況下,我想要3條記錄。

橡木桶您會得到一些瘋狂的答案,可能是因為您所期望的結果不清楚,因此,我建議您澄清其中所期望的結果是否不是您所需要的。

如果您想要答案3,我只能假設您想要一個DISTINCT ClientNo的計數,如果這樣的話,它只是聚合。

SELECT COUNT(DISTINCT ClientNo) as ClientNoDistinctCount
FROM
    TblA
GROUP BY
    ClientNo

好的,這將為您提供所需的計數:

WITH CTE AS
(
    SELECT  *,
            RN = ROW_NUMBER() OVER(PARTITION BY ClientNo ORDER BY Recno)
    FROM TblA
)
SELECT COUNT(DISTINCT Recno) N
FROM CTE
WHERE RN = 1;

嘗試這個..

   ;with cte1
  As(SELECT Recno,clientno 
  ,row_number() over(partition by clientno order by Recno )RNO FROM TblA)
   Select Recno,clientno 
   From cre1 where RNO=1

僅選擇具有最大Recno ClientNo (或將<替換為>以選擇最小的ClientNo )。

Select *
from TblA t1
where not exists(select 1 
         from TblA t2
         where t1.ClientNo = t2.ClientNo and t1.Recno < t2.Recno )  

BTW,已經提到的另一個解決方案,在這種情況下,利用row_number()不需要CTE

SELECT TOP(1) WITH TIES *
FROM TblA
ORDER BY ROW_NUMBER() OVER(PARTITION BY ClientNo ORDER BY Recno)

暫無
暫無

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

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