怎么实现这样的查询?

xuguv 2013-03-05 01:08:26
要求结果是:
订单号 商品ID 价格
1001 A01 10
B01 50
B02 37
1002 A02 24
C01 27
就是能在结果里把重复的,都用空白替代。
...全文
194 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
chuifengde 2013-03-05
  • 打赏
  • 举报
回复
DECLARE @a TABLE(a VARCHAR(20),b VARCHAR(20),c INT)
INSERT @a SELECT '1001',  'A01',   10
UNION ALL SELECT '1001'  ,'B01',   50
UNION ALL SELECT '1001'       ,'B02',   37
UNION ALL SELECT '1002'  ,'A02',   24
UNION ALL SELECT '1002','C01',   27



SELECT a=CASE WHEN exists(SELECT 1 FROM @a WHERE a=a.a AND b<a.b) THEN '' ELSE a end ,a as a1,b,c FROM @a a 
ORDER BY 2,b 

--result
/*a                    a1                   b                    c           
-------------------- -------------------- -------------------- ----------- 
1001                 1001                 A01                  10
                     1001                 B01                  50
                     1001                 B02                  37
1002                 1002                 A02                  24
                     1002                 C01                  27

(所影响的行数为 5 行)*/
  • 打赏
  • 举报
回复
select (case when row=1 then rtrim(订单号) else '' end)订单号,商品ID,价格 
from
 (select row=row_number()over(partition by 订单号 order by getdate()),订单号,商品ID,价格  from tb)t  

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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