Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
 Аватар для carga2
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335

Сводная таблица

29.10.2015, 11:03. Показов 5925. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, ребята!
На картинке диаграмма.

Пользователь заполняет таблицы work1, work2, work3. Требуется создать сводную таблицу вида:
Должность ФИО work1 work2 work3 Сумма(часы) Sector
инженер Петров П.П. 2 4 0 6 1
инженер Иванов И.И. 3 0 5 8 2
для соответствующего ID_Month от 1 до 12
Помогите, пожалуйста, я даже не знаю с какого бока подойти к решению этой задачи. Нужна ли какая-то еще дополнительная информация?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.10.2015, 11:03
Ответы с готовыми решениями:

Сводная таблица
Доброго времени суток) Возникла такая задача: мне нужно создать сводную таблицу загруженности врачей в течение определенного года, где по...

Сводная таблица
Здравствуйте, товарищи. Помогите решить задачу. Необходимо сформировать таблицу как на рисунке, где: поле Кол-во на складе заполняется...

Сводная таблица через запрос SQL
Здравствуйте! Помогите разобраться в таком вопросе: Есть таблица: Номер Период 1111    Вчера 1112    Сегодня 1113    Завтра ...

8
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
29.10.2015, 13:05
в SELECT нужные колонки выделяешь, JOIN-ами соединяешь нужные таблицы через ID. и пишешь условие WHERE - для соответствующего ID_Month от 1 до 12.
есть вообще наработки?)
0
 Аватар для carga2
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
29.10.2015, 13:16  [ТС]
Цитата Сообщение от AndreyVorobey Посмотреть сообщение
есть вообще наработки?)
ну что такое SELECT, JOIN и WHERE я знаю и пользоваться умею) но вот не знаю как решить эту задачу, как их применить?
0
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
29.10.2015, 13:56
PIVOT?
0
 Аватар для carga2
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
30.10.2015, 11:14  [ТС]
Цитата Сообщение от pincet Посмотреть сообщение
PIVOT?
Не пользовалась никогда. С помощью этого оператора возможно решить эту задачу?

Добавлено через 18 часов 28 минут
Я немного разобралась и вот что получилось:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
select    post,Short_FIO,
          (
          select sum(Cost_of_work)
          from work1
          where summ.ID=work1.ID_Stuff and ID_Month=10
          ) as w1,
          (
          select sum(Cost_of_work)
          from work2
          where summ.ID=work2.ID_Stuff and ID_Month=10
          ) as w2,
          (
          select sum(Cost_of_work)
          from work3
          where summ.ID=work3.ID_Stuff and ID_Month=10
          ) as w3
from          [Stuff] as summary
where Sector !=0
order by post
Имеем
 
Должность ФИО w1 w2 w3
инженер Петров П.П. 2 4 0
инженер Иванов И.И. 3 0 5
Как теперь добавить колонку Сумма(часы)(Сумма часов по каждой фамилии)?
 
Должность ФИО w1 w2 w3 Сумма(часы)
инженер Петров П.П. 2 4 0 6
инженер Иванов И.И. 3 0 5 8

Добавлено через 44 минуты
Я сделала вот так
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
select    post,Short_FIO,
          (
          select sum(Cost_of_work)
          from work1
          where summ.ID=work1.ID_Stuff and ID_Month=10
          ) as w1,
          (
          select sum(Cost_of_work)
          from work2
          where summ.ID=work2.ID_Stuff and ID_Month=10
          ) as w2,
          (
          select sum(Cost_of_work)
          from work3
          where summ.ID=work3.ID_Stuff and ID_Month=10
          ) as w3,
          (select 
          ISNULL((select sum(Cost_of_work)
          from work1
          where summ.ID=work1.ID_Stuff and ID_Month=10),0)
          +
          ISNULL((select sum(Cost_of_work)
          from work2
          where summ.ID=work2.ID_Stuff and ID_Month=10),0)
          +
          ISNULL((select sum(Cost_of_work)
          from work3
          where summ.ID=work3.ID_Stuff and ID_Month=10),0)
          ) as summa
from          [Stuff] as summ
where Sector !=0
order by post
Но это очень громоздко. А если таблиц будет больше?
Как сделать компактнее?
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
30.10.2015, 12:05
Цитата Сообщение от carga2 Посмотреть сообщение
Как сделать компактнее?
Чем не угодил банальный left join + group by?
0
 Аватар для carga2
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
30.10.2015, 12:19  [ТС]
Цитата Сообщение от invm Посмотреть сообщение
Чем не угодил банальный left join + group by?
Будьте добры, приведите пример, пожалуйста.
0
3614 / 2135 / 756
Регистрация: 02.06.2013
Сообщений: 5,169
30.10.2015, 12:30
Лучший ответ Сообщение было отмечено carga2 как решение

Решение

Да, left join тут не подойдет. Можно так:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
select
 s.post, s.Short_FIO,
 w1.w1sum, w2.w2sum, w3.w3sum,
 isnull(w1.w1sum, 0) + isnull(w2.w2sum, 0) + isnull(w3.w3sum, 0) as summ
from
 Stuff s outer apply
 (select sum(Cost_of_work) from work1 where ID_Stuff = s.ID and ID_Month = 10) w1(w1sum) outer apply
 (select sum(Cost_of_work) from work2 where ID_Stuff = s.ID and ID_Month = 10) w2(w2sum) outer apply
 (select sum(Cost_of_work) from work3 where ID_Stuff = s.ID and ID_Month = 10) w3(w3sum)
where
 s.Sector <> 0
order by
 s.post;
0
 Аватар для carga2
11 / 9 / 6
Регистрация: 07.11.2013
Сообщений: 335
30.10.2015, 15:43  [ТС]
invm, спасибо вам!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.10.2015, 15:43
Помогаю со студенческими работами здесь

Режимы Сводная таблица и Сводная диаграмма в access 2013
куда делись режимы Сводная таблица и Сводная диаграмма в access 2013? Остались только режимы конструктор и таблица

Сводная таблица
Бухгалтерия хочет получить сводную таблицу начислений сотрудников за один год, с января по декабрь. Бухгалтер Ануар попросил программиста...

Сводная таблица
Добрый день! Подскажите, пожалуйста, как сделать сводную таблицу к данным файла во вложении (выгрузка из программы). Справа -...

Сводная таблица
Добрый день, Цель: запуск сводной таблицы при использовании внешнего источника данных (ВСТАВКА-&gt;СВОДНАЯ ТАБЛИЦА-&gt;ИСПОЛЬЗОВАТЬ...

Сводная таблица
Необходимо решить простые задания, не могу сделать задания № 3,4,5,6 , пожалуйста помогите.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru