如何在同一个表中的SQL中运行vlookup函数?

时间:2016-01-08 11:07:12

标签: sql

我对SQL很陌生,并且很难找到运行以下查询的好方法。

我有一张看起来像这样的表:

NAME       JOB GRADE     MANAGER NAME
X          7             O
Y          6             X
Z          5             X
A          4             Z
B          3             Z
C          2             Z

在此表中,它显示Y和Z报告到X,A,B和C报告到Z.

我想创建一个计算列,显示每个人最高级别直接报告的等级,如果他们不管理任何人,​​则创建“不适用”。所以这看起来像这样:

NAME       JOB GRADE     MANAGER NAME     GRADE OF MOST SENIOR REPORT
X          7             O                6
Y          6             X                N/A
Z          5             X                4
A          4             Z                N/A
B          3             Z                N/A
C          2             Z                N/A

我该怎么做?

2 个答案:

答案 0 :(得分:1)

SELECT g.*,isnull(convert(nvarchar, (SELECT max(g2.GRADE) 
FROM dbo.Grade g2 WHERE 
g2.manager  =g.NAME  AND g2.NAME!=g.NAME    )),'N/A') as most_graded
FROM dbo.Grade g    

max会找出最高等级的

<强>输入

X   7   O
y   6   X
Z   5   X
A   6   Z
C   2   Z

<强>输出

X   7   O   6
y   6   X   N/A
Z   5   X   6
A   6   Z   N/A
C   2   Z   N/A

答案 1 :(得分:0)

这样的事情:

select name, job_grade, manager_name, 
       (select max(job_grade) from grades g2 
        where g2.manager_name = g1.name) as grade_of_most_recent_senior
from grades g1
order by name;

以上是ANSI SQL,应该适用于任何DBMS。

SQLFiddle示例:http://sqlfiddle.com/#!15/e0806/1