Как подсчитать двойные значения в SQL Server, сравнивая несколько столбцов? - PullRequest
0 голосов
/ 16 апреля 2019

Я настраиваю отчет управления качеством данных для организации с несколькими администрациями.От всех администраций данные хранятся в одном хранилище данных.Проблема в том, что разные администрации используют один и тот же код, но разное описание для определенных полей.Одна администрация (A11) является ведущей.Я хочу посчитать, сколько кодов удвоено и сколько строк они содержат.

[administration]   [code_description]
 A11               1 / contract
 A11               3 / Supplier
 A23               1 / Contracts
 A23               3 / Supplier
 A31               1 / contract
 A31               3 / Delivery
 A56               1 / Contracts
 A56               3 / Delivery

Есть 2 кода, но 4 разных описания.Код 1: контракт / Контракты и код 3: Поставщик / Доставка.Столбец code_description - это один столбец, содержащий код и описание.

Я хотел бы узнать, сколько записей имеют такой же код, что и администрация A11, но имеют другое описание.

SELECT DISTINCT administration,
PARSENAME(REPLACE(code_description,'/','.'),2) as code, 
PARSENAME(REPLACE(code_description,'/','.'),1) as description
FROM db_table
WHERE administration IN
(
   SELECT administration
   FROM db_table
)

Я не знаю, как идти отсюда, я перечислил каждую опцию, но я не знаю, как перебирать строки, чтобы проверить: совпадают ли коды, но описание отличается от A11администрация.

Я хотел бы получить количество двойных значений в качестве вывода.

'Amount double values: '   count_of_doubles

1 Ответ

0 голосов
/ 17 апреля 2019

Здравствуйте, следующий sqlcode получит каждая администрация, его номер вхождения

  declare @X as table( administration nvarchar(200), code_description nvarchar(200) )  insert into @x select 'A11','1 / contract '  insert into @x select 'A23','1 / Contracts' insert into @x select 'A23', '3 / Supplier ' insert into @x select 'A31' ,'1 / contract ' insert into @x select 'A31' ,'1 / contract ' insert into @x select 'A31','3 / Delivery ' insert into @x select 'A56','1 / Contracts' insert into @x select 'A56','3 / Delivery '  insert into @x select 'A56','3 / Delivery '  insert into @x select 'A56','3 / Delivery '

    SELECT administration,count(*) CountOfAdiminitrators
    FROM @X
    GROUP BY administration 

и вывод следующим образом: A11 вставляется один раз, A23 дважды и следующим образом:

output of the query

...