MsSQL视图如何修改相同的记录

nanchangniat 2011-01-18 04:37:35
MsSQL视图如何修改相同的记录
我有一个视图,如下
产品编码 | 订单数量 | 模数
10001 800 6
10001 500 6
10001 800 6
10002 800 5
10003 1000 6
其中模数是根据产品的特性,直接可以从产品编号提取(意思就是如产品编号为10001时,模数就是6,产品编号为10002时,模数为5)
但是我现在需要打印出来,打印的时候当产品编码相同的时候,模数就改为0,一个产品编码只要一个模数。(打印是取视图的数据)
需要修改成以下样式
产品编码 | 订单数量 | 模数
10001 800 6
10001 500 0
10001 800 0
10002 800 5
10003 1000 6
要求是不修改表的记录。


...全文
117 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
nanchangniat 2011-01-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 dawugui 的回复:]
SQL code
--sql 2000必须使用临时表,生成一个序号
create table tb(产品编码 varchar(10), 订单数量 int, 模数 int)
insert into tb values('10001', 800 ,6)
insert into tb values('10001', 500 ,6)
insert into tb values('10001'……
[/Quote]

谢谢啊·~
我的问题解决了。
dawugui 2011-01-18
  • 打赏
  • 举报
回复
--sql 2005使用row_number
create table tb(产品编码 varchar(10), 订单数量 int, 模数 int)
insert into tb values('10001', 800 ,6)
insert into tb values('10001', 500 ,6)
insert into tb values('10001', 800 ,6)
insert into tb values('10002', 800 ,5)
insert into tb values('10003', 1000 ,6)
go

select 产品编码,订单数量,
模数 = (case when id = (select top 1 id from (select * , row_number() over(partition by 产品编码 order by 产品编码) as id from tb) m where m.产品编码 = t.产品编码) then 模数 else 0 end)
from (select * , row_number() over(partition by 产品编码 order by 产品编码) as id from tb) t

drop table tb

/*
产品编码 订单数量 模数
---------- ----------- -----------
10001 800 6
10001 500 0
10001 800 0
10002 800 5
10003 1000 6

(5 行受影响)

*/
dawugui 2011-01-18
  • 打赏
  • 举报
回复
--sql 2000必须使用临时表,生成一个序号
create table tb(产品编码 varchar(10), 订单数量 int, 模数 int)
insert into tb values('10001', 800 ,6)
insert into tb values('10001', 500 ,6)
insert into tb values('10001', 800 ,6)
insert into tb values('10002', 800 ,5)
insert into tb values('10003', 1000 ,6)
go

select *,id = identity(int,1,1) into tmp from tb

select 产品编码,订单数量,
模数 = (case when id = (select top 1 id from tmp where 产品编码 = t.产品编码) then 模数 else 0 end)
from tmp t

drop table tb,tmp

/*
产品编码 订单数量 模数
---------- ----------- -----------
10001 800 6
10001 500 0
10001 800 0
10002 800 5
10003 1000 6

(所影响的行数为 5 行)
*/

22,302

社区成员

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

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