求一sql语句

dayusky 2005-03-14 09:15:50
产品记录里有一个字段叫做"ptype","ptype"表示该产品的类型,可能值为"A类"、"B类"、"C类"……,求一sql语句要求选出类型为"A类"和"B类"各自分别最近更新的10条产品记录,更新时间字段为"logintime"。

多谢
...全文
89 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xluzhong 2005-03-14
  • 打赏
  • 举报
回复
alter table tablename add sid int identity(1,1)

select *
from tablename a
where sid in(select top 10 sid from tablename where ptype=a.ptype order by logintime desc)

alter table tablename drop column sid
dayusky 2005-03-14
  • 打赏
  • 举报
回复
哇塞,这个有创意,不过好象更复杂了。。。
jones129 2005-03-14
  • 打赏
  • 举报
回复
Create Table #Temp1
(ptype varchar(10),
pname varchar(10),
logintime datetime)

Insert into #temp1(ptype,pname,logintime)
Select 'A类','1','2005-03-01'
Insert into #temp1(ptype,pname,logintime)
Select 'A类','3','2005-03-02'
Insert into #temp1(ptype,pname,logintime)
Select 'A类','4','2005-03-03'
Insert into #temp1(ptype,pname,logintime)
Select 'A类','5','2005-03-04'
Insert into #temp1(ptype,pname,logintime)
Select 'A类','7','2005-03-05'
Insert into #temp1(ptype,pname,logintime)
Select 'A类','2','2005-03-06'
Insert into #temp1(ptype,pname,logintime)
Select 'A类','6','2005-03-07'
Insert into #temp1(ptype,pname,logintime)
Select 'A类','8','2005-03-12'
Insert into #temp1(ptype,pname,logintime)
Select 'A类','9','2005-03-09'
Insert into #temp1(ptype,pname,logintime)
Select 'A类','1','2005-03-10'


Insert into #temp1(ptype,pname,logintime)
Select 'B类','1','2005-03-01'
Insert into #temp1(ptype,pname,logintime)
Select 'B类','1','2005-03-02'
Insert into #temp1(ptype,pname,logintime)
Select 'B类','1','2005-03-03'
Insert into #temp1(ptype,pname,logintime)
Select 'B类','1','2005-03-04'
Insert into #temp1(ptype,pname,logintime)
Select 'B类','1','2005-03-05'
Insert into #temp1(ptype,pname,logintime)
Select 'B类','1','2005-03-06'
Insert into #temp1(ptype,pname,logintime)
Select 'B类','1','2005-03-07'
Insert into #temp1(ptype,pname,logintime)
Select 'B类','1','2005-03-08'
Insert into #temp1(ptype,pname,logintime)
Select 'B类','1','2005-03-09'
Insert into #temp1(ptype,pname,logintime)
Select 'B类','1','2005-03-11'


Select Top 10 logintime,Max([A类]),Max([B类])
From (Select case When ptype='A类' then pname else '' end 'A类',
case When ptype='B类' then pname else '' end 'B类',
logintime
From #Temp1
) A
group By logintime
Order by logintime desc

Drop Table #Temp1
dayusky 2005-03-14
  • 打赏
  • 举报
回复
有更简单的写法吗?如果要选出ABCDEFG……十几类的产品,不是要重复写十几遍select top 10 * from table where ptype……吗?
xuam 2005-03-14
  • 打赏
  • 举报
回复
select top 10 * from table where ptype='A类' order by logintime desc
union all
select top 10 * from table where ptype='B类' order by logintime desc

34,587

社区成员

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

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