Sql 排名显示所有用户罚款。但是如何显示一个用户的排名?

Sql 排名显示所有用户罚款。但是如何显示一个用户的排名?,sql,sql-server,Sql,Sql Server,我有一个SQL查询: SELECT DENSE_RANK() OVER (ORDER BY s.rows DESC) AS Ranks, Territory, TM_Name, COALESCE(g.rows, 0) AS RXCount, COALESCE(s.rows, 0) AS DelCounts, COALESCE(nd.rows, 0) AS NotDeliveredCount, COALESCE(trgt.rows, 0) AS

我有一个SQL查询:

SELECT 
    DENSE_RANK() OVER (ORDER BY s.rows DESC) AS Ranks,
    Territory, TM_Name,
    COALESCE(g.rows, 0) AS RXCount, 
    COALESCE(s.rows, 0) AS DelCounts,
    COALESCE(nd.rows, 0) AS NotDeliveredCount,
    COALESCE(trgt.rows, 0) AS Target,
    e.TM_Emp_Id
FROM 
    tblEmployee e
LEFT JOIN
    (SELECT EmpCode, SUM(RxGenerate) AS rows 
     FROM tbl_RX 
     GROUP BY EmpCode) g ON g.EmpCode = e.TM_Emp_Id
LEFT JOIN
    (SELECT EmpCode, SUM(MedToPCount) AS rows 
     FROM tbl_MedicinToPatient 
     WHERE Status = 'Delivered' 
     GROUP BY EmpCode) s ON s.EmpCode = e.TM_Emp_Id
LEFT JOIN
    (SELECT EmpCode, COUNT(*) AS rows 
     FROM tbl_MedicinToPatient 
     WHERE Status != 'Delivered' 
     GROUP BY EmpCode) nd ON nd.EmpCode = e.TM_Emp_Id
LEFT JOIN
    (SELECT 
         EmpCode, CurrentTarget AS rows,   
         CreatedDate, RankOrder, T.PreviousTarget 
     FROM
         (SELECT
              EmpCode, CurrentTarget, CreatedDate,PreviousTarget,
              RANK() OVER (PARTITION BY EmpCode ORDER BY CreatedDate DESC) RankOrder
          FROM
              tbl_Target) T 
     WHERE 
         RankOrder = 1) trgt ON trgt.EmpCode = e.TM_Emp_Id
它返回所需的输出。也就是说,对于每个用户,它都能完美地计算排名。但当我在查询末尾添加where条件时,例如:

e.TM_Emp_Id = 101
它显示一个1的等级。对于每个用户,我都会得到相同的结果(即排名1)。
但我想显示原始排名。我如何做到这一点?提前谢谢

对此,您至少有3个简单的选项

  • 将整个查询封装到子查询中,使其看起来像

    select * 
    from (current code) 
    where TM_Emp_ID = 101
    
  • 与上述相同,但将其作为CTE:

    WITH MY_QUERY AS 
    (current code) 
    SELECT * 
    FROM MY_QUERY 
    WHERE TM_EMP_ID = 101
    
  • 除使用临时表外,与上述2项相同


  • 您必须对所有用户进行排名,才能了解特定用户的排名。因此,请从查询中选择:

    select *
    from ( your query here ) q
    where tm_emp_id = 101;
    

    将您的查询包装起来
    select*from(您的代码)t其中t.TM_Emp_Id=101
    点击“谢谢你的伴侣”@JamieD77一定要给我答案,让我接受。