【发布时间】:2018-04-03 08:05:10
【问题描述】:
我有一个表 #temp,我需要根据列 (Tariff_Value) 值删除一些重复项。
下面是 SQL 小提琴,我已经填充了随机值。
CREATE TABLE #temp
(
[acctnumber] varchar(50),
[Premnumber] varchar(50),
x varchar(5),
y varchar(5),
z varchar(5),
w varchar(5),
[Tariff_value] varchar(50)
)
INSERT INTO #temp VALUES ('1234228','234233','x','y','z','w','RATE 5M PRIVATE AREA sndfwsme')
INSERT INTO #temp VALUES ('1234228','234233','x','y','z','w','RATE 2M SM GEN SVC sdfuaisdfbeu')
INSERT INTO #temp VALUES ('3237329','234233','x','y','z','w','RATE 5M PRIVATE AREA sndfwsme')
INSERT INTO #temp VALUES ('3237329','234233','x','y','z','w','RATE 2M SM GEN SVC sdfuaisdfbeu')
INSERT INTO #temp VALUES ('6541835','234233','x','y','z','w','RATE 2M SM GEN SVC sdfuaisdfbeu')
INSERT INTO #temp VALUES ('6541835','234233','x','y','z','w','RATE 2Mdf SM GEN SVC sdfuaisdfbeu')
INSERT INTO #temp VALUES ('7545322','234233','x','y','z','w','RATE 8Msd SM GEN SVC sdfuaisdfbeu')
INSERT INTO #temp VALUES ('7545322','234233','x','y','z','w','RATE 2M SM GEN SVC sdfuaisdfbeu')
INSERT INTO #temp VALUES ('8548235','234233','x','y','z','w','RATE 5M PRIVATE AREA sndfwsme')
INSERT INTO #temp VALUES ('8548235','234233','x','y','z','w','RATE 5M12 PRIVATE AREA sndfwsme')
INSERT INTO #temp VALUES ('5482312','234233','x','y','z','w','RATE 5M6552 PRIVATE AREA sndfwsme')
INSERT INTO #temp VALUES ('5482312','234233','x','y','z','w','RATE 5M PRIVATE AREA sndfwsme')
INSERT INTO #temp VALUES ('7589631','234233','x','y','z','w','RATE 5M PRIVATE AREA sndfwsme')
INSERT INTO #temp VALUES ('7589631','234233','x','y','z','w','RATE 2M SM GEN SVC sdfuaisdfbeu')
我需要一个可以实现以下逻辑的查询,或者任何有效的 CROSS APPLY 逻辑来获得这些如果可能的话,非常感谢。
;WITH cte1 AS
(
SELECT [acctnumber], [Premnumber],x,y,z,w,count(*) AS cnt FROM #temp
GROUP BY [acctnumber], [Premnumber],x,y,z,w
)
,
SELECT a.* FROM #temp a INNER JOIN cte1 b ON a.acctnumber = b.acctnumber AND a.Premnumber = b.Premnumber
WHERE (if b.cnt >1 then FETCH record from #temp table exclude tarriff_value like '%2M%' and fetch tarriff_value like '%5M%' )
问题:如果没有 5M 记录与之关联,则输出查询不应排除 2M 记录。随后,它应从(2M 和 5M)记录中排除 2M。
视觉上的解释
【问题讨论】:
-
账户号码总是成对的吗?
标签: sql sql-server tsql sql-server-2012