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
,但我需要与locyy
对应的第一条记录,即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