数据库的查询结果替换

ddddsw 2011-03-09 02:46:18
我有一个表A 字段为 AID ,AName,Number
有一个子表B, 字段为BID,BName。 B表的ID对应于A表的ID,A与B为一对多的关系。
用Left Join 查询结果如

AID , AName,Number,BID, BName
1 国家 5 1 开发前期
1 国家 5 2 开发准备
1 国家 5 3 开发中
1 国家 5 4 开发后期


现在我希望Number只显示第一个5,后面3个Number的值替换为0。 现在这个结果在一个临时表里面,希望能通过SQL语句实现这种效果,请各位大侠们救救急啊。
最好是SQL语句,而不是函数之类的。  谢谢啊
...全文
203 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddddsw 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ssp2009 的回复:]
SQL code
select AID , AName,(case when no>2 then 0 else Number end) as [number],BID, BName
from(
select row_number() over(partition by rtrim(AID)+AName+rtrim([Number]) order by getdate()) as no,*
……
[/Quote]
谢谢
AcHerat 2011-03-09
  • 打赏
  • 举报
回复
[Quote=引用楼主 qiaoshi110 的回复:]
我有一个表A 字段为 AID ,AName,Number
有一个子表B, 字段为BID,BName。 B表的ID对应于A表的ID,A与B为一对多的关系。
用Left Join 查询结果如

AID , AName,Number,BID, BName
1 国家 5 1 开发前期
1 国家 5 2 开发准备
……
[/Quote]

将你的number字段改为 case when bid = 1 then number else 0 end
ljking0731 2011-03-09
  • 打赏
  • 举报
回复
--建表
create table #Test(Aid int, AName varchar(10), Number int, Bid int, BName varchar(10))
--数据
insert into #Test
select 1,'国家',5,1,'开发前期' union all
select 1,'国家',5,2,'开发准备' union all
select 1,'国家',5,3,'开发中' union all
select 1,'国家',5,4,'开发后期'
--结果
select Aid,AName,Number*(case Bid when 1 then 1 else 0 end) as Number,Bid,BName from #test
Aid AName Number Bid BName
----------- ---------- ----------- ----------- ----------
1 国家 5 1 开发前期
1 国家 0 2 开发准备
1 国家 0 3 开发中
1 国家 0 4 开发后期

(4 行受影响)
dawugui 2011-03-09
  • 打赏
  • 举报
回复
针对结果,语句大致如下:

select m.*,
newnumber = (case when BID = (select min(bid) from (你的查询) n where n.aid = m.aid) then bid else 0 )
from (你的查询) m
--小F-- 2011-03-09
  • 打赏
  • 举报
回复
bid是自增的么??
如果是的话就简单了

update tb set Number=0 from tb where BID>1
快溜 2011-03-09
  • 打赏
  • 举报
回复
select AID , AName,(case when no>2 then 0 else Number end) as [number],BID, BName
from(
select row_number() over(partition by rtrim(AID)+AName+rtrim([Number]) order by getdate()) as no,*
from A left join B on A.AID=B.BID) a
wing7742 2011-03-09
  • 打赏
  • 举报
回复
未测试



select aid,aname
,number=case when aid=bid then number else 0 end
,bid,bname from tb

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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