SQL 去重一条数据,横向查询
2023-03-06 16:10 Evan.Pei 阅读(57) 评论(0) 编辑 收藏 举报1.根据一个字段去掉一行重复的记录,取第一行。
select s.* from ( select *, row_number() over (partition by TagName order by TagID) as group_idx from V_DeviceInfoState_PDR1 WHERE DID=6769 ) s where s.group_idx = 1
2.纵向数据改横向查询。
SELECT Position, SUM(CASE WHEN ABCID='0'then PV ELSE 0 end) AS 'N', SUM(CASE WHEN ABCID='1'then PV ELSE 0 end) AS 'A', SUM(CASE WHEN ABCID='2'then PV ELSE 0 end) AS 'B', SUM(CASE WHEN ABCID='3'then PV ELSE 0 end) AS 'C' FROM V_DeviceInfoState_PDR1 WHERE did=6769 and DataTypeID!=23 GROUP BY DataTypeID,Position ORDER BY DataTypeID
3.分类去重,后取时间最大的一条数据。
--根据类型去重后取时间最大的一条数据 --not exists 不存在,与()中的取反 select * from t_WeiPaiData as a where not exists ( select 1 from t_WeiPaiData as b where b.WPNum=a.WPNum and b.DTime>a.DTime)AND a.DID=2
4.删除数据库日志文件
--查看数据库日志文件占用情况 dbcc sqlperf(logspace) --清除数据库 USE 数据库 ALTER DATABASE 数据库 SET RECOVERY SIMPLE DBCC SHRINKDATABASE(数据库,0) ALTER DATABASE 数据库 SET RECOVERY FULL