在SQL查询中选择除max记录以外的所有记录
我一直在努力使这项工作,但我没有得到任何进展。我需要的是: 我需要能够为特定表选择除MAX记录以外的所有记录。我知道如何使用TOP或Max选择Max记录,但我想显示除此之外的所有记录。有办法做到这一点吗?我已经尝试了下面的代码,但是我一直在获得MAX记录在SQL查询中选择除max记录以外的所有记录,sql,Sql,我一直在努力使这项工作,但我没有得到任何进展。我需要的是: 我需要能够为特定表选择除MAX记录以外的所有记录。我知道如何使用TOP或Max选择Max记录,但我想显示除此之外的所有记录。有办法做到这一点吗?我已经尝试了下面的代码,但是我一直在获得MAX记录 SELECT rtrim(ltrim(pn.sFirstName + ' ' + pn.uLastName)) as newroom FROM tenant t (nolock) INNER JOIN room
SELECT
rtrim(ltrim(pn.sFirstName + ' ' + pn.uLastName)) as newroom
FROM tenant t (nolock)
INNER JOIN room rm (NOLOCK) on t.hmyperson = rm.hmytenant
and isnull(rm.boccupant,0)=0
and rm.dtmoveout is null
INNER JOIN person pn (nolock) on pn.hmy = rm.hmyperson
WHERE pn.hmy <>
(SELECT TOP 1 pn.hmy
FROM tenant t (nolock)
INNER JOIN property p (nolock) on p.hMy = t.hProperty
INNER JOIN unit u (nolock) on (t.hUnit = u.hMy
INNER JOIN addr ua (nolock) on u.hmy = ua.hPointer
INNER JOIN room rm (NOLOCK) on t.hmyperson = rm.hmytenant
and isnull(rm.boccupant,0)=0
and rm.dtmoveout is null
and isnull(rm.dtMoveIn,getdate()) >= getdate()
INNER JOIN person pn (nolock) on pn.hmy = rm.hmyperson
WHERE t.code = '011212'
ORDER BY pn.hmy)
and t.code = '011212'
拉取记录后,我想将MAX记录合并到一个单独的行中
感谢您的帮助。基本上,您希望: 从tableA中选择*其中tableA.ID<从tableA中选择MAXID 在查询中:第9行-将其更改为: 然后拆下管路20。这是不必要的 谢谢你的意见 我更接近了。我的下一个障碍是试图分离剩余的记录。例如,有多个名称链接到记录 我希望是: 新房间,新房间2 鲍勃·史密斯, 乔治·威尔逊 我得到: 新房间,新房间2 牛仔 乔治·威尔逊 我的代码如下:
SELECT
rtrim(ltrim(pn.sFirstName + ' ' + pn.uLastName)) as newroom,
rtrim(ltrim(pn1.sFirstName + ' ' + pn1.uLastName))as newroom2
FROM tenant t (nolock)
INNER JOIN room rm (NOLOCK) on t.hmyperson = rm.hmytenant
and isnull(rm.boccupant,0)=0
and rm.dtmoveout is null
INNER JOIN person pn (nolock) on pn.hmy = rm.hmyperson
LEFT OUTER JOIN room rm1 (NOLOCK) on t.hmyperson = rm1.hmytenant
and isnull(rm1.boccupant,0)=0
and rm1.dtmoveout is null
LEFT OUTER JOIN person pn1 (nolock) on pn1.hmy = rm1.hmyperson
WHERE (pn.hmy or pn1.hmy) <>
(SELECT Max(pn.hmy)
FROM tenant t (nolock)
INNER JOIN property p (nolock) on p.hMy = t.hProperty
INNER JOIN unit u (nolock) on (t.hUnit = u.hMy
and u.sCode not in ('WAIT' ,'COMAREA')
and u.scode not like 'NONRES%'
and u.exclude = '0' )
INNER JOIN addr ua (nolock) on u.hmy = ua.hPointer
INNER JOIN room rm (NOLOCK) on t.hmyperson = rm.hmytenant
and isnull(rm.boccupant,0)=0
and rm.dtmoveout is null
INNER JOIN person pn (nolock) on pn.hmy = rm.hmyperson
WHERE t.scode = 't0029839'
而t.scode='t0029839'
更不用说,我还需要同一行的MAX记录:
MAX_Room,NewRoom,NewRoom 2
谢谢大家看一看要删除一行,您可以根据sql风格使用减号或减号。谢谢。我用Praveen的解决方案解决了这个问题。还有一个问题-有没有办法将MAX记录合并到同一个SQL语句中?我的结果是这样的:max记录,所有其他记录在一行上。最多可以有4个名称符合“所有其他记录”。感谢将其标记为有用,以便帮助他人:
SELECT MAX(pn.hmy)
SELECT
rtrim(ltrim(pn.sFirstName + ' ' + pn.uLastName)) as newroom,
rtrim(ltrim(pn1.sFirstName + ' ' + pn1.uLastName))as newroom2
FROM tenant t (nolock)
INNER JOIN room rm (NOLOCK) on t.hmyperson = rm.hmytenant
and isnull(rm.boccupant,0)=0
and rm.dtmoveout is null
INNER JOIN person pn (nolock) on pn.hmy = rm.hmyperson
LEFT OUTER JOIN room rm1 (NOLOCK) on t.hmyperson = rm1.hmytenant
and isnull(rm1.boccupant,0)=0
and rm1.dtmoveout is null
LEFT OUTER JOIN person pn1 (nolock) on pn1.hmy = rm1.hmyperson
WHERE (pn.hmy or pn1.hmy) <>
(SELECT Max(pn.hmy)
FROM tenant t (nolock)
INNER JOIN property p (nolock) on p.hMy = t.hProperty
INNER JOIN unit u (nolock) on (t.hUnit = u.hMy
and u.sCode not in ('WAIT' ,'COMAREA')
and u.scode not like 'NONRES%'
and u.exclude = '0' )
INNER JOIN addr ua (nolock) on u.hmy = ua.hPointer
INNER JOIN room rm (NOLOCK) on t.hmyperson = rm.hmytenant
and isnull(rm.boccupant,0)=0
and rm.dtmoveout is null
INNER JOIN person pn (nolock) on pn.hmy = rm.hmyperson
WHERE t.scode = 't0029839'