2015-09-09 66 views
1

databaseHey球員我需要一些SQL語法的幫助,我試圖做的是查詢只顯示記錄,其中有多個名字,所以它會顯示客戶鮑勃,如果他有兩個記錄,但忽略了吉爾,因爲她只有一個記錄其中名稱有重複

`SELECT [SubID] 
     ,[Title] 
     ,[FName] 
     ,[LName] 
     ,[State] 
     ,[Zip] 
     ,[DOB] 
     ,[DriverLicence] 
     ,[Cell_Number] 
     ,[Account_Number] 
     ,[Email_Address] 
     ,[CreatedDate] 
    FROM [database].[dbo].[table] 
    WHERE [Zip] = '0000' OR [zip] = '0001' OR [zip] = '0002'AND IF COUNT(Fname)=>1 
    ORDER BY [CreatedDate]` 
+0

RDBMS你使用哪一個? SQL Server? –

+0

@EricJ。當然不是,'COUNT()'是集合函數,只能在'select'和'having'語句中使用。它不僅在SQL Server中,它是SQL規則 – Marusyk

+0

是它的SQL Sever並且它的無效是哪個是我的問題也是SQL中的newb是我的其他問題 –

回答

0

您可以group byhaving做到這一點。

select [SubID] 
    ,[Title] 
    ,t.[FName] 
    ,[LName] 
    ,[State] 
    ,[Zip] 
    ,[DOB] 
    ,[DriverLicence] 
    ,[Cell_Number] 
    ,[Account_Number] 
    ,[Email_Address] 
    ,[CreatedDate] 
FROM [HSEnroll_PI].[dbo].[Enrollment_PI] t 
JOIN (
select fname 
from [HSEnroll_PI].[dbo].[Enrollment_PI] 
group by fname 
having count(*) > 1) x 
on x.fname = t.fname 
WHERE [Zip] = '0000' OR [zip] = '0001' OR [zip] = '0002' 
order by createddate 
+0

使用此語法導致沒有出現結果 –

+0

查詢已被modified.try最新的一個。另外,你是否會得到單獨運行內部查詢的結果? –

+0

再次運行連接似乎忽略我的where語句,它幾乎崩潰了我的數據庫哈哈 –

0

集團通過作品和有工作,但我喜歡ROW_NUMBER方法更好,更潔淨:

WITH a as 
(
SELECT [SubID] 
     ,[Title] 
     ,[FName] 
     ,[LName] 
     ,[State] 
     ,[Zip] 
     ,[DOB] 
     ,[DriverLicence] 
     ,[Cell_Number] 
     ,[Account_Number] 
     ,[Email_Address] 
     ,[CreatedDate] 
     ,ROW_NUMBER() OVER(PARTITION by FName ORDER BY FName) AS duplicateRecCount 
    FROM [HSEnroll_PI].[dbo].[Enrollment_PI] 
    WHERE [Zip] = '0000' OR [zip] = '0001' OR [zip] = '0002' 
) 
SELECT * FROM a 
where duplicateRecCount > 1 
+0

謝謝你完美的工作row_number輸出每個複製爲一行可以讓它顯示所有重複項而不是每個重複項一行? –