Дублирование T-SQL Pivot - PullRequest
1 голос
/ 08 октября 2019

У меня есть таблица со следующей структурой:

enter image description here

В этой таблице DayOfWeek=2 - понедельник и т. Д.

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

enter image description here

Но по какой-то причине в магазине 25 он генерирует дубликатыс этим запросом:

 SELECT p.Store, 
             CASE WHEN[2] is null THEN 0 ELSE LT END L,
             CASE WHEN[3] is null THEN 0 ELSE LT END M,
             CASE WHEN[4] is null THEN 0 ELSE LT END W,
             CASE WHEN[5] is null THEN 0 ELSE LT END J,
             CASE WHEN[6] is null THEN 0 ELSE LT END V          
             FROM(SELECT DISTINCT
             [DayOfWeek], Store, LT FROM replenishment.[Routes]) AS s 
                           PIVOT 
                           (MAX([DayOfWeek]) FOR[DayOfWeek] in  ([2], [3], [4], [5], [6])) as p 
                           WHERE p.Store=25

Результат этого запроса:

enter image description here

Как получить результат без этихдубликаты?

1 Ответ

2 голосов
/ 08 октября 2019

Как насчет использования условного агрегирования:

 SELECT p.Store, 
        MAX(CASE WHEN DayOfWeek = 2 THEN LT ELSE 0 END) as L,
        MAX(CASE WHEN DayOfWeek = 3 THEN LT ELSE 0 END) as M,
        MAX(CASE WHEN DayOfWeek = 4 THEN LT ELSE 0 END) as W,
        MAX(CASE WHEN DayOfWeek = 5 THEN LT ELSE 0 END) as J,
        MAX(CASE WHEN DayOfWeek = 6 THEN LT ELSE 0 END) as V
FROM replenishment.[Routes] r
WHERE p.Store = 25
GROUP BY p.Store;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...