22,209
社区成员
发帖
与我相关
我的任务
分享
SELECT a.alarmid,
a.DefectType,
a.fzpbl,
a.AlarmType,
a.fcpbl,
a.ComponentID,
a.Name,
a.BlockID,
a.CodeText,
a.Side,
a.InspectionID,
a.InspectionDateTime,
a.fdatetime,
a.LogonID,
a.Operator,
a.Station
FROM v_bljl AS a
INNER JOIN (
SELECT MIN( CAST(alarmid AS VARCHAR(50)) ) AS alarmid
FROM v_bljl
GROUP BY
DefectType,
NAME,
BlockID
) AS b
ON a.alarmid = b.alarmid
这样是否可以?;WITH cte AS (
Select *,ROW_NUMBER()OVER(PARTITION BY FB,FC,FD ORDER BY FA) rn from #T
)
SELECT * FROM cte WHERE rn=1
--借#1版主测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([FA] nvarchar(22),[FB] nvarchar(24),[FC] nvarchar(22),[FD] nvarchar(22),[FE] nvarchar(26))
Insert #T
select N'01',N'PASS',N'Q1',N'OK',N'EA-001' union all
select N'02',N'NG',N'U1',N'NO',N'EB-001' union all
select N'03',N'PASS',N'R1',N'OK',N'EC-001' union all
select N'04',N'NG',N'U1',N'NO',N'ED-001' union all
select N'05',N'PASS',N'C1',N'OK',N'EE-001'
GO
SELECT a.* FROM #t a INNER JOIN (
SELECT MIN(FA) AS FA FROM #t GROUP BY FB,FC,FD
) AS b ON a.FA=b.FA
/*
FA FB FC FD FE
01 PASS Q1 OK EA-001
02 NG U1 NO EB-001
03 PASS R1 OK EC-001
05 PASS C1 OK EE-001
*/
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([FA] nvarchar(22),[FB] nvarchar(24),[FC] nvarchar(22),[FD] nvarchar(22),[FE] nvarchar(26))
Insert #T
select N'01',N'PASS',N'Q1',N'OK',N'EA-001' union all
select N'02',N'NG',N'U1',N'NO',N'EB-001' union all
select N'03',N'PASS',N'R1',N'OK',N'EC-001' union all
select N'04',N'NG',N'U1',N'NO',N'ED-001' union all
select N'05',N'PASS',N'C1',N'OK',N'EE-001'
Go
--测试数据结束
;WITH cte AS (
Select *,ROW_NUMBER()OVER(PARTITION BY FB,FC,FD ORDER BY FA) rn from #T
)
DELETE FROM cte WHERE rn>1
SELECT * FROM #T