powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как обратится повторно к тому же столбцу и работать с ним не трогая первый запрос
4 сообщений из 4, страница 1 из 1
Как обратится повторно к тому же столбцу и работать с ним не трогая первый запрос
    #39868627
MOaY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Задание: Вывести для каждого поставщика сколько им было поставлено продуктов: в год и в каждом квартале.



Код: sql
1.
2.
3.
select nazvanie, kol from postavshiki
join postavki on postavki.pc=postavshiki.pc
where DATEPART(year,data)=2015




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


Как мне опять обратится к этому столбику что бы уже ввести условия ТОЛЬКО на 1 квартал, так что бы это была одна таблиц (ЗА ГОД, ЗА 1 КВАРТАЛ, ЗА 2 КВАРТАЛ, ЗА 3 КВАРТАЛ, ЗА 4 КВАРТАЛ.)
...
Рейтинг: 0 / 0
Как обратится повторно к тому же столбцу и работать с ним не трогая первый запрос
    #39868681
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MOaY,

Почитайте про CASE
...
Рейтинг: 0 / 0
Как обратится повторно к тому же столбцу и работать с ним не трогая первый запрос
    #39868694
Фотография vikkiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MOaY,

group by
...
Рейтинг: 0 / 0
Как обратится повторно к тому же столбцу и работать с ним не трогая первый запрос
    #39869020
istrebitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Не используйте функцию от поля даты для выборки диапазона, SQL сервер будет просматривать всю таблицу и применять datepart к каждой строке и после этого проверять равен ли результат 2015. Если у вас будет индекс по этому полю, то он не поможет.

2. Создаёте функцию округляющую дату до квартала

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE FUNCTION [dbo].[StartOfTheQuarter]
(
	@Date datetime
)
RETURNS datetime
AS
BEGIN
	DECLARE @d datetime = convert(datetime, convert(char(8), @Date, 112), 112);
	RETURN DATEADD(QUARTER, DATEDIFF(QUARTER, 0, @d), 0); 
END



После чего запросом получите данные в разрезе кварталов с суммой по году
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
select 
	provs.nazvanie
	, dbo.StartOfTheQuarter(delivs.data)
	, sum(delivs.kol)
from 
	postavshiki provs
	join postavki delivs on delivs.pc = provs.pc
where 
	delivs.data >= convert(datetime, '01.01.2015', 104)
	and delivs.data < convert(datetime, '01.01.2016', 104)
group by 
	provs.nazvanie
	, cube(dbo.StartOfTheQuarter(delivs.data))
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как обратится повторно к тому же столбцу и работать с ним не трогая первый запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]