Как я могу сгруппировать строки субботы / воскресенья как «выходные» с датами, указанными в SMALLDATETIME? - PullRequest
0 голосов
/ 07 октября 2019

У меня есть список дат, которые я пытаюсь сгруппировать по дням недели, однако я хотел бы сгруппировать строки субботы / воскресенья как «Выходные».

SELECT DATENAME(weekday, [MYDATE])
FROM MYTABLE
GROUP BY DATENAME(weekday, [MYDATE])

Результаты группируются по дням недели, но суббота / воскресенье - их собственные строки. Я понятия не имею, как сгруппировать эти два ряда вместе. Я не могу изменить форматирование с SMALLDATETIME и не могу изменить таблицы.

1 Ответ

0 голосов
/ 07 октября 2019

Простой подход, но не обязательно самая быстрая производительность, поэтому подумайте, если таблица мала.

SELECT DATENAME(weekday, [MYDATE])
FROM MYTABLE
WHERE DATEPART(dw,GETDATE()) IN (2,3,4,5,6)
GROUP BY DATENAME(weekday, [MYDATE])
UNION ALL
SELECT 'WEEKEND'
FROM MYTABLE
WHERE DATEPART(dw,GETDATE()) IN (1,7)
GROUP BY DATENAME(weekday, [MYDATE])

Вы также можете использовать оператор CASE, как предложил p Waksman. Если таблица большая, я бы предложил такой подход, поскольку он, вероятно, будет работать лучше, чем синтаксис UNION

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