TSQL程序,以查找该位置是否有多个deptno,并显示第一个deptno

TSQL程序,以查找该位置是否有多个deptno,并显示第一个deptno,tsql,Tsql,部门表 deptno dname loc 100 a xx 200 b yy 300 c tt 400 d yy 500 e pp 当我执行TSQL查询以显示deptno和dname其loc为yy时,我得到输出400d,但我需要与locyy对应的第一条记录,即200b 代码如下 DECLARE @DNO VARCHAR(20) DECLARE @DNM VARCHAR(20) DECLARE @LOC VARCHAR(20)

部门表

deptno dname loc
100    a     xx
200    b     yy
300    c     tt
400    d     yy
500    e     pp
当我执行TSQL查询以显示
deptno
dname
loc
yy
时,我得到输出
400d
,但我需要与loc
yy
对应的第一条记录,即
200b

代码如下

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
请帮助我

取决于您如何定义“第一条记录”。如果订单由部门编号决定,则可以执行以下操作:

SELECT TOP 1 deptno, dname
FROM YourTable
WHERE loc = 'yy'
ORDER BY deptno

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

包括您的sql语句。如前所述,请包括您希望我们审查/改进的代码。感谢Chad Henderson和Brain抱歉,我已经提到了代码。它的工作原理与我所需要的一样,只是在选择中包括了TOP 1。您可能需要添加一个
ORDER BY
子句,以便
TOP
将返回更可预测的结果。
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