0

好吧,我有一个如下的 SQL 表:

姓名 职务 部门 工资
美国广播公司 aaaa qazwsx 15
Abc aaaa hehene 73
美国广播公司 aaaa 基因 55
Abc bbbb thghbh 33
Abc bbbb 呵呵呵呵433
Abc bbbb eyehhe 54

创建数据的声明 -

CREATE TABLE #StackOverflow
(Name VARCHAR(5)
,Title VARCHAR(5)
, Dept VARCHAR(10)
, Salary INT);

INSERT INTO #StackOverflow
(Name, Title, Dept, Salary)
SELECT 'Abc', 'aaaa', 'qazwsx', 15  UNION ALL
SELECT 'Abc', 'aaaa', 'hehene', 73  UNION ALL
SELECT 'Abc', 'aaaa', 'geneh', 55   UNION ALL
SELECT 'Abc', 'bbbb', 'thghbh', 33  UNION ALL
SELECT 'Abc', 'bbbb', 'hehehe', 433 UNION ALL
SELECT 'Abc', 'bbbb', 'eyehhe', 54

我需要编写一个查询,它将为我提供名称为和标题为的前 2 个部门abcaaaa其名称为abc和标题为bbbb。这应该是按工资排序的!

如何使用 SQL 子查询来实现它?

4

2 回答 2

2
;WITH X AS 
 (
  SELECT * 
       ,ROW_NUMBER() OVER (PARTITION BY Name, Title
                           ORDER BY Salary DESC) rn 
  FROM TableName 
 )
SELECT * 
FROM x 
WHERE rn <= 2
于 2015-08-20T21:39:18.937 回答
-1
SELECT TOP 2 dept
   FROM table 
   WHERE name='abc' AND title='aaaa'
   ORDER BY salary DESC;
于 2015-08-20T21:38:59.027 回答