Sql server 多列去重复值,相同的只显示一条数据

CREATE TABLE #tp
(
headerNo VARCHAR(10),
machineNO VARCHAR(10),
descrption nVARCHAR(20),
artNo VARCHAR(20),
qty INT ,
repartno varchar(20) ,
repqty INT
)

insert INTO #tp SELECT ‘HD01‘,‘0101520‘,N‘电池出问题‘,‘102020‘,2,‘102020‘,2
insert INTO #tp SELECT ‘HD01‘,‘0101520‘,N‘电池出问题‘,‘101010‘,2,‘202020‘,2
insert INTO #tp SELECT ‘HD01‘,‘0101520‘,N‘电池出问题‘,‘126888‘,2,‘102020‘,2
insert INTO #tp SELECT ‘HD02‘,‘01012221‘,N‘D电机故障‘,‘102020‘,2,‘102020‘,2
insert INTO #tp SELECT ‘HD03‘,‘12312312‘,N‘突然停机‘,‘102020‘,2,‘102020‘,2
insert INTO #tp SELECT ‘HD03‘,‘12312312‘,N‘突然停机‘,‘102020‘,2,‘102020‘,2
insert INTO #tp SELECT ‘HD04‘,‘12312344‘,N‘皮带松了‘,‘102020‘,2,‘102020‘,2

SELECT CASE when row=1 THEN headerNo ELSE ‘‘ END headerNo,
CASE when row=1 THEN machineNO ELSE ‘‘ END machineNO,
CASE when row=1 THEN descrption ELSE ‘‘ END descrption
,artNo,qty,repartno,repqty
FROM
(
SELECT *,row_number()OVER(PARTITION BY headerNo,machineNO,descrption ORDER BY GETDATE())row
FROM #tp
)M

时间: 2024-12-17 04:47:57

Sql server 多列去重复值,相同的只显示一条数据的相关文章

Sql语句 表中相同的记录(某个字段)只显示一条,按照时间排序显示最大或最小

原始表数据: 想要的结果数据为: sql语句: select * from Table_1 where DT in(select min(DT)   from Table_1 group by AccountID)  --DT为时间字段

update值与原值相同时,SQL Server会真的去update还是忽略呢?

原文:update值与原值相同时,SQL Server会真的去update还是忽略呢? 考虑下面的情况: 当update值与原值相同时,SQL Server会真的去update还是忽略?例如: update tbname set name='abc' --name原来的值就是abc where id=1 再如: update tbname set name='abc' --name原来的值就是abc where name='abc' 接下来我们将实际测试: --Microsoft SQL Ser

在SQL Server中快速删除重复记录

在SQL Server中快速删除重复记录 2006-07-17 21:53:15 分类: SQL Server 开发人员的噩梦——删除重复记录 想必每一位开发人员都有过类似的经历,在对数据库进行查询或统计的时候不时地会碰到由于表中存在重复的记录而导致查询和统计结果不准确.解决该问题的办法就是将这些重复的记录删除,只保留其中的一条. 在SQL Server中除了对拥有十几条记录的表进行人工删除外,实现删除重复记录一般都是写一段代码,用游标的方法一行一行检查,删除重复的记录.因为这种方法需要对整个表

重置sql server标识列

sql server标识列是大家非常熟悉的了,下面为您介绍了sql server标识列重置的一些知识,如果您对sql server标识列方面感兴趣的话,不妨一看. 1.删除表内所有值并重置标识值 TRUNCATE TABLE TableName 2.保持表的内容,并重置自动编号列的SEED DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 如dbcc checkident ("bc_pos",reseed,1)即可,但如果

SQL Server表分区的NULL值问题

SQL Server表分区的NULL值问题 SQL Server表分区只支持range分区这一种类型,往往会被大家吐槽 人家MySQL支持四种类型:RANGE分区.LIST分区.HASH分区.KEY分区 共同点是MySQL跟SQL Server也有分区对齐的问题,都是水平切分,大家都允许分区列存在NULL值 这次我们测试SQL Server表分区的分区列的NULL值,究竟NULL值是被存放在哪个区间,以前一直没有注意 测试脚本 --1.创建文件组 ALTER DATABASE [sss] ADD

sql server 查看列备注、类型、字段大小

select 列名 = a.name ,类型 = c.name ,长度 = columnproperty(a.id,a.name,'precision') ,备注 = g.value from syscolumns a left join sysobjects b on a.id=b.id left join systypes c on a.xusertype = c.xusertype left join sysproperties g on a.id =g.id and a.colid =g

oracle 查某一列有重复值的记录

-- 查找重复记录select names,num from test where rowid != (select max(rowid)                  from test b                 where b.names = test.names and                      b.num = test.num) 或者使用 select names,num from test where rownum!= (select max(rownum

Mysql与sql server的列的合并

Mysql SELECT concat(列1,列2) Nmae from 表名 sql server SELECT 列1+"|"+列2 Nmae from 表名 或者 union all

sql过滤掉重复记录,只保留一条数据

--过滤掉重复记录,只保留一条数据delete from gzfw_yhxxwhere Zjhm in (select Zjhm from gzfw_yhxx group by Zjhm having count(Zjhm) > 1)and rowid not in (select min(rowid) from gzfw_yhxx group by Zjhm having count(Zjhm )>1)