0
点赞
收藏
分享

微信扫一扫

2021-08-13

树下的老石头 2022-03-24 阅读 39
数据库sql

SQL实现多条数据重复行只显示一条,非重复的数据全部显示

今天导数据,发现很多都是重复列,只有一两行数据是不重复的,由于才接触SQL不久,就试了下,最终借助ROW_NUMBER()OVER(PARTITION BYORDER BY)实现了,记录哈

在这里插入代码片
SELECT 
CASE WHEN CONVERT(INT,Row_num) = 1 THEN OrderName  ELSE '' END AS OrderName ,
CASE WHEN Row_num = 1 THEN Seq ELSE '' END AS Seq,
CASE WHEN Row_num = 1 THEN TNR ELSE '' END ,
//不想As了,太累了,但凡重复过多就累了,所以一直想可不可以不写这么多的case when 实现,奈何额不晓得。
CASE WHEN Row_num = 1 THEN Description ELSE '' END,
CASE WHEN Row_num = 1 THEN SO ELSE '' END,
CASE WHEN Row_num = 1 THEN  CONVERT(NVARCHAR(20),POS) ELSE '' END,
//做类型转化呢,是因为这些字段有decimal类型和int类型,1.解决报错;2.int为空时显示0,为了好看自然不要0,我要空
CASE WHEN Row_num = 1 THEN  CONVERT(NVARCHAR(20),Qty) ELSE '' END,
CASE WHEN Row_num = 1 THEN  CONVERT(NVARCHAR(20),QtyDone) ELSE '' END,
CASE WHEN Row_num = 1 THEN  CONVERT(NVARCHAR(20),IsDelete) ELSE '' END,
CASE WHEN Row_num = 1 THEN  CONVERT(NVARCHAR(20),IsClose) ELSE '' END,
CASE WHEN Row_num = 1 THEN  CONVERT(NVARCHAR(20),CreateDate,121) ELSE '' END,
lot,Box,lotQ 
FROM (
SELECT a.OrderName,b.Seq,b.TNR,e.Description,b.SO,b.POS,b.Qty,b.QtyDone,b.IsDelete,b.IsClose,b.CreateDate,c.lot,c.Box,c.Qty AS LotQ,
CONVERT(INT,ROW_NUMBER()OVER(PARTITION BY a.OrderName,b.Seq,b.TNR,e.Description,b.SO,b.POS,b.Qty,b.QtyDone,b.IsDelete,b.IsClose,b.CreateDate 
ORDER BY c.lot,c.Box,c.Qty,b.CreateDate ) )AS Row_num 
FROM POrder a 
left JOIN OrderItem b ON b.POrderId = a.POrderId 
left JOIN OrderItemLot c ON c.OrderItemId = b.OrderItemId
left JOIN lot d ON d.LotSN = c.LotSN  
left JOIN product e ON e.ProductId=b.ProductId
LEFT JOIN productRoot f ON f.ProductId=b.ProductId
WHERE OrderName LIKE '89%' AND a.IsClose=0 ) AS Pdata
|  |  |
第一版查询
|
**90000***	000040	***20003***	****611	4	50153.0000	50153.0000	0	1	2022-03-09 07:34:39.400	***VJ	***0M	10000.0000	1
**90000***	000040	***20003***	****611	4	50153.0000	50153.0000	0	1	2022-03-09 07:34:39.400	***VL	***0M	10000.0000	2
**90000***	000040	***20003***	****611	4	50153.0000	50153.0000	0	1	2022-03-09 07:34:39.400	***VN	***0M	10000.0000	3
**90000***	000040	***20003***	****611	4	50153.0000	50153.0000	0	1	2022-03-09 07:34:39.400	***VR	***0M	10000.0000	4
**90000***	000040	***20003***	****611	4	50153.0000	50153.0000	0	1	2022-03-09 07:34:39.400	***W5	***0M	10000.0000	5
**90000***	000040	***20003***	****611	4	50153.0000	50153.0000	0	1	2022-03-09 07:34:39.400	***DY	***0M	153.0000	6
**90000***	000050	***40000448 ****611 5	259.0000	259.0000	0	1	2022-03-09 07:34:39.407	***JS	***VV	259.0000	1
**90000***	000060	***40007414 ****611	6	101000.0000	101000.0000	0	1	2022-03-09 07:34:39.413	***JT	***GJ	101000.0000	1
|
第二版查询
**90000***	000040	***20003***	****611	4	50153.0000	50153.0000	0	1	2022-03-09 07:34:39.400	***VJ	***0M	10000.0000	
																									***VL	***0M	10000.0000	
																									***VN	***0M	10000.0000	
																									***VR	***0M	10000.0000	
																									***W5	***0M	10000.0000	
																									***DY	***0M	153.0000	
**90000***	000050	***40000448 ****611	5	259.0000	259.0000	0	1	2022-03-09 07:34:39.407	***JS	***VV	259.0000	
**90000***	000060	***40007414 ****611	6	101000.0000	101000.0000	0	1	2022-03-09 07:34:39.413	***JT	***GJ	101000.0000	
|  |  |
别问为什么带*号,问就是别人的数据,被认出来多尴尬!!!haha
举报

相关推荐

2021-08-25

2021-11-08

2021-08-14

2021-08-31

2021-08-06

2021-08-12

2021-10-08

2021-07-13

0 条评论