Вот таблица, состоящая из данных, как показано ниже:
StandardName|Username |RType
------------|------------|--------
Department |Department | Position
Division |Division | Entity
Division |Division | Position
Plant |Plant | Entity
Section |Section | Position
SubDivision |Sub-Division| Entity
SubDivision |Subdivision | Position
SubSection |Subsection | Position
Unit |Unit | Entity
Я хочу, чтобы все StandardName и UserName следовали за Rtype = 'Entity', а в случае Rtype = 'Position' он получит толькоStandardName, которые не связаны с RType 'Entity'
. Для этого я выполнил запрос, подобный этому
SELECT DISTINCT u.StandardName, u.UserName ,ISNULL(e.RType,'position') AS RType
from (
SELECT DISTINCT StandardName,UserName
from Table1 AS ee where RType = 'Entity'
UNION
SELECT DISTINCT StandardName, UserName
from Table1 AS pp where RType = 'position'
) u
LEFT OUTER JOIN (
select UserName,StandardName,RType
from Table1 WHERE RType='Entity'
) e on e.StandardName = u.StandardName
ORDER BY Rtype
Затем получим
StandardName|Username |RType
------------|------------|--------
Division |Division | Entity
Plant |Plant | Entity
SubDivision |Sub-Division| Entity
SubDivision |Subdivision | Entity
Unit |Unit | Entity
Department |Department | Position
Section |Section | Position
SubSection |Subsection | Position
Здесь, в случае«SubDivision» он появляется два раза, тогда как он должен появляться один раз с RType «Entity».
Ожидаемый результат должен быть--
StandardName|Username |RType
------------|------------|--------
Division |Division | Entity
Plant |Plant | Entity
SubDivision |Sub-Division| Entity
Unit |Unit | Entity
Department |Department | Position
Section |Section | Position
SubSection |Subsection | Position
SQLFIDDLE Ссылка