怎么样用一条语句取出每组除了第一条和最后一条数据的信息

redcn2004 2011-12-24 03:58:52
题目:
表名 TEST

数据:
TID VID VName VNumber
1 1 AA 10
2 1 AA 8
3 1 AA 2
4 2 BB 90
5 2 BB 70
6 2 BB 20

要求按照VID 和 VName分组,取出数据:
TID VID Vname Vnumber
2 1 AA 8
5 2 BB 70

也就是取出每组除了开始一条和最后一条的其他所有信息。
...全文
143 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-12-24
  • 打赏
  • 举报
回复
select * from(select px=row_number()over(partition by VID ,VName order by TID,* from tb)t  where  px<>1
union all
select * from(select px=row_number()over(partition by VID ,VName order by TID desc),* from tb)t where px<>1
--小F-- 2011-12-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wufeng4552 的回复:]
SQL code
SELECT *
FROM TB t
WHERE TID != ( SELECT MIN(Tid)
FROM TB
WHERE Vid = t.VID
AND [VName] = t.[VName]
)
……
[/Quote]
死水锅。
SQL777 2011-12-24
  • 打赏
  • 举报
回复
SELECT  *
FROM TB t
WHERE EXISTS
( SELECT 1 FROM TB WHERE T.TID>MIN(TID) AND T.TID<MAX(T.TID) AND Vid = t.VID AND [VName] = t.[VName] GROUP BY VNAME,VID)
SQL777 2011-12-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 kuqideyupian 的回复:]
SQL code

SELECT *
FROM TB T1
WHERE EXISTS(
SELECT 1 FROM TB T2 WHERE T2.VID=T1.VID AND T2.VNAME=T1.VNAME AND T2.TID<T1.TID
) AND EXISTS(
SELECT 1 FROM TB T2 WHERE T2.VID=T1.VID AND T2.VNAME=T1……
[/Quote]
死鸭子。
水族杰纶 2011-12-24
  • 打赏
  • 举报
回复
SELECT  *
FROM TB t
WHERE TID != ( SELECT MIN(Tid)
FROM TB
WHERE Vid = t.VID
AND [VName] = t.[VName]
)
AND Tid != ( SELECT MAX(Tid)
FROM TB
WHERE Vid = t.VID
AND [VName] = t.[VName]
)
_0筱筱0_ 2011-12-24
  • 打赏
  • 举报
回复
SELECT *
FROM TB T1
WHERE EXISTS(
SELECT 1 FROM TB T2 WHERE T2.VID=T1.VID AND T2.VNAME=T1.VNAME AND T2.TID<T1.TID
) AND EXISTS(
SELECT 1 FROM TB T2 WHERE T2.VID=T1.VID AND T2.VNAME=T1.VNAME AND T2.TID>T1.TID
)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧