TSQL Query - новый столбец на основе условия - PullRequest
0 голосов
/ 29 октября 2019

У меня есть таблица, такая как ниже. Столбец C должен быть новым столбцом на основе следующих критериев:

  1. Для каждого элемента в столбце A (имеющего одинаковое значение, например, все 1 или все 2), независимо от того, принадлежит ли он к группе A и B(Столбец B) это должно быть = Группа A (как в столбце C)
  2. Но если (в столбце B) элемент 3 не принадлежит группе A (столбец B), тогда он должен просто по умолчанию использовать столбецЗначения B в столбце C.
Column A | Column B | Column C
   1     | Group A  | Group A
   1     | Group B  | Group A
   2     | Group A  | Group A
   2     | Group C  | Group A
   3     | Group C  | Group C
   3     | Group E  | Group E  

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

Спасибо

1 Ответ

1 голос
/ 29 октября 2019

Если я вас правильно понимаю, вы можете попробовать следующий подход, используя оконный SUM() без предложения ORDER BY (для использования строк во всем разделе):

Таблица:

CREATE TABLE #Data (
    ColumnA int,
    ColumnB varchar(10)
)
INSERT INTO #Data 
    (ColumnA, ColumnB)
VALUES
    (1, 'Group A'),  
    (1, 'Group B'),  
    (2, 'Group A'),  
    (2, 'Group C'),  
    (3, 'Group C'),  
    (3, 'Group E')     

Заявление:

SELECT 
    ColumnA,
    ColumnB,
    CASE 
        WHEN SUM(CASE WHEN ColumnB IN ('Group A', 'Group B') THEN 1 ELSE 0 END) OVER (PARTITION BY ColumnA) > 0 THEN 'Group A'
        ELSE ColumnB
    END AS ColumnC
FROM #Data

Результат:

ColumnA ColumnB ColumnC
1       Group A Group A
1       Group B Group A
2       Group A Group A
2       Group C Group A
3       Group C Group C
3       Group E Group E
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...