首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

查询视图反复行赋值

2012-07-30 
查询视图重复行赋值查询视图重复行赋值select*fromvip_scysbzclmxqty (视图)如下:(mqty重复)billid ,billc

查询视图重复行赋值
查询视图重复行赋值
select * from vip_scysbzclmxqty (视图)

如下: (mqty重复)
billid ,billcode ,mgoodsid,mqty,dgoodsid,dqty
1001 ,pc001 , 123 ,300, 2 , 300
1001 ,pc001 , 123 ,300, 3 , 300
1001 ,pc001 , 123 ,300, 4 , 300
1001 ,pc001 , 123 ,300, 5 , 300

要求生成查询视图结果如下:
billid ,billcode ,mgoodsid,mqty,dgoodsid,dqty
1001 ,pc001 , 123 ,300, 2 , 300
1001 ,pc001 , 123 ,0, 3 , 300
1001 ,pc001 , 123 ,0, 4 , 300
1001 ,pc001 , 123 ,0, 5 , 300



[解决办法]
billid ,billcode ,mgoodsid,mqty,dgoodsid,dqty
1001 ,pc001 , 123 ,300, 2 , 300
1001 ,pc001 , 123 ,0, 3 , 300
1001 ,pc001 , 123 ,0, 4 , 300
1001 ,pc001 , 123 ,0, 5 , 300

--这个结果通过什么算法的来的??
[解决办法]

SQL code
select billid ,billcode ,mgoodsid,case when num=1 then mqty else 0 end as mqty ,dgoodsid,dqtyfrom(selectrow_number()over(order by dgoodsid asc) as num,* from vip_scysbzclmxqty) a
[解决办法]
如果需要分组的话
SQL code
select billid ,billcode ,mgoodsid,case when num=1 then mqty else 0 end as mqty ,dgoodsid,dqtyfrom(select row_number()over(partition by billid order by dgoodsid asc) as num,* from vip_scysbzclmxqty) a 

热点排行