1

部门表

deptno dname loc
100    a     xx
200    b     yy
300    c     tt
400    d     yy
500    e     pp

当我执行 TSQL 查询以显示deptnoand dnamewho locisyy我得到输出400 d但我需要与 loc 对应的第一条yy记录200 b

代码如下

DECLARE @DNO VARCHAR(20)
DECLARE @DNM VARCHAR(20)
DECLARE @LOC VARCHAR(20)='YY'
BEGIN
    SELECT  @DN=DNAME,@DNO=DEPTNO
    FROM DEPT
    WHERE LOC=@LOC
IF @@ROWCOUNT=0
PRINT 'INVALID'
ELSE
PRINT @DNM+ ''+@DNO
END

请帮助我

4

2 回答 2

0

取决于您如何定义“第一条记录”。如果顺序由部门编号确定,您可以这样做:

SELECT TOP 1 deptno, dname
FROM YourTable
WHERE loc = 'yy'
ORDER BY deptno
于 2013-06-04T17:11:32.317 回答
0
select a.deptno, 
a.dname 
from myTable as a
inner join 
    (select loc, 
    min(deptno) minDeptno
    from myTable
    group by loc) as b
on a.loc = b.loc
and a.deptno = b.minDeptno
where loc = @LOC

您可以在子查询中使用 where 子句,但这似乎更可重用。

于 2013-06-04T18:10:58.503 回答