这是一个很好的。
我差不多完成但遇到了障碍。我试图组合两个字段,然后使用LIKE语句比较数据。这很容易。正如您在示例中看到的,我现在有多个具有多个CardNumbers的FullName。我需要保留唯一的FullName,但如果有重复,只保留带有' 23'的那个。所以在底部ZUNIGA RAMIREZ JOSE ANTONIO有2条记录,我只想保留' 230803'。但是VELAZQUEZ MARTINEZ YAZMIN只有一首以#21;'开头的记录,我也想保留它。
希望我很清楚。
SELECT Distinct
[Lastname]+' '+[Firstname] as FullName
,[CardNumber]
,[Status]
FROM [AxiomData].[dbo].[vwCardholders]
Where [Status] > 0 AND [CardNumber] LIKE '2%'
ORDER BY FullName ASC;
示例:
FullName CardNumber
SOTO SOSA HUGO 205962
SOTO SOSA HUGO 234429
TELLO MACIAS ALEJANDRO 230841
TORRES PONCE IVAN 234346
TORRES PONCE IVAN 205889
TRUJILLO ARCE ALBERTO 234337
TRUJILLO ARCE ALBERTO 205881
VALDIVIA HERNANDEZ BENJAMIN 230830
VARGAS ANAYA JHONATAN 205853
VAZQUEZ CALDERON MARICARMEN 205838
VAZQUEZ CALDERON MARICARMEN 234289
VAZQUEZ PINEDA PAUL 234253
VAZQUEZ PINEDA PAUL 205805
VELAZQUEZ MARTINEZ YAZMIN 210165
VILLAFUERTE MEJIA EMMANUEL 234169
VILLAFUERTE MEJIA EMMANUEL 205731
VILLAGOMEZ MAYA PEDRO 234166
YAÑEZ ESTRADA GERARDO VALENTIN 205709
ZUÑIGA RAMIREZ JOSE ANTONIO 230803
ZUÑIGA RAMIREZ JOSE ANTONIO 209588
答案 0 :(得分:0)
您可以使用条件聚合执行此操作。 。 。长条件:
SELECT [Lastname]+' '+[Firstname] as FullName,
(case when sum(case when CardNumber like '23%' then 1 else 0 end) > 0
then max(case when CardNumber like '23%' then CardNumber end)
else max(CardNumber)
end) as CardNumber
FROM [AxiomData].[dbo].[vwCardholders]
Where [Status] > 0 AND [CardNumber] LIKE '2%'
GROUP BY [Lastname]+' '+[Firstname]
ORDER BY FullName ASC;