У меня есть таблица, в которой есть два столбца с дубликатами.
id name classname description
-----------------------------
1 a aa aa:abcd
2 a Unknown Unknown
3 b bb unknown
4 c cc abcd
Теперь у меня есть запрос выбора, в котором я должен отфильтровать все дубликаты, и мое описание отображается как идентификатор, мой результат должен быть таким,
id name identifier
-----------------
1 a aa
2 b NULL
3 c NULL
где все описания без ':' в качестве символьного индекса должны отображаться как NULL или Unknown как Null.
Я использую приведенный ниже запрос выбора для фильтрации дубликатов в столбце «имя», но я не могу использовать тот же запрос для описания, что и случай для получения результата, чтобы обрезать мое описание «aa: abcd». ' к аа
select distinct
id,
(select top 1 name
from table1 t
where t.name = t1.name
order by case t1.classname
when 'Unknown Tag Class' then 0
else 1
end
) name,
(case when charindex(':',Description)> 0
then substring(Description,1,(charindex(':',Description)-1))
end
) as Identifier
from table1 t1
In the above query I want to modify the case statement of description so that i can filter duplicates and also trim the values like "aa:abcd" to "aa" and put them in identifier column.
Need help on this.
this is the query i am using
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[EXEC_REP_TransposedTagAttributes]')
AND type in (N'U'))
BEGIN
select distinct
[Att : 42674] as TagID
,Tagname
,isnull([Att : 14591],'-') as OriginatingContractor
,isnull([Att : 14594],'-') as System
,(case when charindex(':',TargetName)> 0 then
substring(TargetName,(charindex(':',TargetName)+1),len(TargetName))
end) as SystemDescription
,(case when charindex(':',TagClassDescription)> 0 then
substring(TagClassDescription,1,(charindex(':',TagClassDescription)-1))
end) as TagIdentifier
from EXEC_REP_TransposedTagAttributes t1
LEFT JOIN (SELECT SourceName, TargetName FROM EXEC_REP_Associations WHERE AssociationType = '3' and TargetClassName = 'SUB SYSTEM') b ON TagName = b.SourceName
where tagname='ZIH-210053' Order by [Att : 42674]
END
ELSE
select 'Reporting Database is being refreshed, please wait.' as errMsg
и результат, который я получаю,
TagID Имя тега OriginatingContractor System SystemDescription TagIdentifier
2609005 ZIH-210053 Hyundai Heavy Industries (верхние части) 210 Slugcatcher NULL 2609005 ZIH-210053 Hyundai Heavy Industries (верхние части) 210 Slugcatcher ZIH
есть также строки, которые имеют идентификатор тега как нулевой и не имеют дубликатов
name
или возможныйidentifier
также участвует в определении; т. е. возможно ли, что есть строка сname
=a
иdescription
=df:ghi
, и если да, то является ли результат одной строкой сname
a
(как мы определяем идентификатор?) или есть две строки? - person Damien_The_Unbeliever   schedule 18.10.2013