2015-09-09 64 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输出每个复制为一行可以让它显示所有重复项而不是每个重复项一行? –