Получить отличительные значения SQL Server 2016 - PullRequest
0 голосов
/ 06 ноября 2019

Моя проблема в том, что ...
У меня есть этот отличный результат таблицы
Таблица 1:
SELECT DISTINCT (CONCAT(ACCT , DOC)) as ACCTDOC FROM AuxTable

ACCTDOC
xxx123
yyy456

2 строки

Когда я группируюдля другого поля я получаю этот результат:
Таблица 2:
SELECT DISTINCT(CONCAT(ACCT,DOC))) as ACCTDOC, GENDER FROM AuxTable group by ACCT,DOC,GENDER

ACCTDOC GENDER
xxx123  M
xxx123  F
yyy456  M

3 строки

Как получить только одну строку в эту секундутаблица, которая совпадает с таблицей один. Я должен оставить поле Пол . Это возможно? Могу ли я показать разницу между таблицей 1 и таблицей 2?

Мой ожидаемый результат

ACCTDOC GENDER
xxx123  M
yyy456  M

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Я бы никогда не использовал отдельный, но всегда формулировал бы группу по выражению, отличная - фактически грязная группа, из-за которой не выводятся идентичные строки. например, с STRING_AGG (см. агрегатные / строковые функции https://docs.microsoft.com/en-us/sql/t-sql/functions/string-functions-transact-sql?view=sql-server-ver15).

Пример:

DECLARE @TableTest TABLE
    (ID INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
     ACCT VARCHAR(10) NOT NULL,
     DOC VARCHAR(10) NOT NULL,
     GENDER VARCHAR(10) NULL)

INSERT INTO @TableTest
  (ACCT,
   DOC,
   GENDER) 
VALUES
  ('xxx',
   '123',
   'M'),
  ('xxx',
   '123',
   'F'),
  ('yyy',
   '456',
   'M')

SELECT CONCAT(tt.ACCT, tt.DOC) as ACCTDOC,
      --tt.ACCT,
      --tt.DOC,
      STRING_AGG(tt.GENDER,'/') AS Genders
FROM   @TableTest AS tt
GROUP BY tt.ACCT,
        tt.DOC
0 голосов
/ 06 ноября 2019

У меня нет тестовых данных, чтобы попробовать их, но я надеюсь, что следующий запрос будет работать для вас:

SELECT *
FROM Table2 AS t2
WHERE NOT EXISTS 
(
    SELECT 1 
    FROM Table1 AS t1 
    WHERE t1.ACCT = t2.ACCT AND t1.DOC = t2.DOC
)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...