Sql server 根据列条件跳过记录

Sql server 根据列条件跳过记录,sql-server,sql-server-2008,sql-server-2005,sql-server-2008-r2,sql-server-2012,Sql Server,Sql Server 2008,Sql Server 2005,Sql Server 2008 R2,Sql Server 2012,我对sql server有一个问题 表名:Emp Id |Pid |Firstname| LastName | Level 1 |101 | Ram |Kumar | 3 1 |100 | Ravi |Kumar | 2 2 |101 | Jaid |Balu | 10 1 |100 | Hari | Babu | 5 1 |103 | nani | Jai |44 1

我对sql server有一个问题

表名:Emp

Id  |Pid  |Firstname| LastName  | Level
1   |101  | Ram     |Kumar      | 3
1   |100  | Ravi    |Kumar      | 2
2   |101  | Jaid    |Balu       | 10
1   |100  | Hari    | Babu      | 5
1   |103  | nani    | Jai       |44
1   |103  | Nani    | Balu      |10
3   |103  |bani     |lalu       |20
这里需要根据id和Pid列检索唯一的记录,并且需要跳过具有重复记录的记录

最后,我希望输出如下

Id  |Pid  |Firstname| LastName  | Level
1   |101  | Ram     |Kumar      | 3
2   |101  | Jaid    |Balu       | 10
3   |103  |bani     |lalu       |20
根据下面的查询,我发现了重复的记录

select id,pid,count(*) from emp group by id,pid having count(*) >=2
此查询获取重复的记录2,这些记录需要跳过以检索输出


请告诉我如何在sql server中编写查询以完成此任务。

由于您的输出基于唯一的
ID
PID
,它们没有任何重复值,因此您可以使用
COUNT
和分区来实现所需的结果

样本数据

CREATE TABLE Emp
    ([Id] int, [Pid] int, [Firstname] varchar(4), [LastName] varchar(5), [Level] int);

INSERT INTO Emp
    ([Id], [Pid], [Firstname], [LastName], [Level])
VALUES
    (1, 101, 'Ram', 'Kumar', 3),
    (1, 100, 'Ravi', 'Kumar', 2),
    (2, 101, 'Jaid', 'Balu', 10),
    (1, 100, 'Hari', 'Babu', 5),
    (1, 103, 'nani', 'Jai', 44),
    (1, 103, 'Nani', 'Balu', 10),
    (3, 103, 'bani', 'lalu', 20);
查询

SELECT * 
FROM
(
SELECT *,rn = COUNT(*) OVER(PARTITION BY ID,PID)
FROM Emp
) Emp
WHERE rn = 1
输出

| Id | Pid | Firstname | LastName | Level |
|----|-----|-----------|----------|-------|
|  1 | 101 |       Ram |    Kumar |     3 |
|  2 | 101 |      Jaid |     Balu |    10 |
|  3 | 103 |      bani |     lalu |    20 |

请仅标记适当的sql版本。标记所有版本不Helphi在这里我们需要考虑基于ID+PID的唯一记录,如果这个组合没有唯一的,那么跳过相关的所有重复的记录。HI按给出查询得到的结果是ID PID FrestNordLASTEND等级RN 1 103 Nani Jai 44 44 1 2 101 JAID BALU 10 1 3 103 BANI LALU 20 1这个结果没有给出我的例外结果请告诉我在哪里需要查询来得到精确的结果。这里需要考虑唯一的记录ID+PID,如果这个组合没有唯一的,那么就需要跳过那些相关的记录。在你的输出中,你只有唯一的ID,而不是ID和PID的组合。例如,ID PID 1100不在结果中。请确保您的结果符合您的要求。可能是如何选择行的详细示例。主要需要基于id+pid获取唯一记录。正如您所说,id pid 1100不包含正确的记录,同样,id pid 1103记录在我的结果中也不包含记录,但这些记录是执行给定查询的。您能告诉我哪里出错了吗?我想,我已经得到了您的要求。您需要id+pid的非重复组合。i、 e.仅返回计数为1的id+pid。检查更新answer@srinivasa-如果此答案对您有帮助,请将其标记为。