Форум программистов, компьютерный форум, киберфорум
Наши страницы
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
carga2
6 / 6 / 4
Регистрация: 07.11.2013
Сообщений: 244
1

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

16.01.2020, 13:36. Просмотров 854. Ответов 6
Метки нет (Все метки)

Здравствуйте, товарищи.
Помогите решить задачу.
Необходимо сформировать таблицу как на рисунке, где: поле Кол-во на складе заполняется суммой Quantity из таблицы Warehouse для соответствующего Артикля, поле Кол-во в заказах A заполняется суммой Quantity из таблицы Order для соответствующего Артикля и со статусом А из таблицы Status (Связь Order.Num - Status.OrderNum), поле Кол-во в заказах B заполняется суммой Quantity из таблицы Order для соответствующего Артикля и со статусом B из таблицы Status (Связь Order.Num - Status.OrderNum).
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
CREATE TABLE [dbo].[Common](
    [Article] [nvarchar](50) NOT NULL,
    [Desc] [nvarchar](50) NOT NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[Order](
    [Num] [nvarchar](50) NOT NULL,
    [Article] [nvarchar](50) NOT NULL,
    [Quantity] [int] NOT NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[Status](
    [OrderNum] [nvarchar](50) NOT NULL,
    [Status] [nvarchar](50) NOT NULL
) ON [PRIMARY]
 
CREATE TABLE [dbo].[Warehouse](
    [Article] [nvarchar](50) NOT NULL,
    [Quantity] [int] NOT NULL
) ON [PRIMARY]
 
INSERT [dbo].[Common] ([Article], [Desc]) VALUES (N'1', N'a')
INSERT [dbo].[Common] ([Article], [Desc]) VALUES (N'2', N'b')
INSERT [dbo].[Common] ([Article], [Desc]) VALUES (N'3', N'c')
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'111', N'1', 10)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'112', N'1', 11)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'222', N'2', 22)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'223', N'2', 23)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'333', N'3', 33)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'334', N'3', 34)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'444', N'1', 11)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'445', N'1', 12)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'555', N'2', 55)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'556', N'2', 56)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'777', N'3', 77)
INSERT [dbo].[Order] ([Num], [Article], [Quantity]) VALUES (N'778', N'3', 78)
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'111', N'A')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'112', N'B')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'222', N'A')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'223', N'B')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'333', N'A')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'334', N'B')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'444', N'A')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'445', N'B')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'555', N'A')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'556', N'B')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'777', N'A')
INSERT [dbo].[Status] ([OrderNum], [Status]) VALUES (N'778', N'B')
INSERT [dbo].[Warehouse] ([Article], [Quantity]) VALUES (N'1', 10)
INSERT [dbo].[Warehouse] ([Article], [Quantity]) VALUES (N'1', 33)
INSERT [dbo].[Warehouse] ([Article], [Quantity]) VALUES (N'2', 4)
0
Лучшие ответы (1)
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2020, 13:36
Ответы с готовыми решениями:

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

Сводная таблица
Здравствуйте, ребята! На картинке диаграмма. Пользователь заполняет таблицы work1, work2,...

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

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

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

6
carga2
6 / 6 / 4
Регистрация: 07.11.2013
Сообщений: 244
16.01.2020, 13:57  [ТС] 2
Вот рисунок
0
Изображения
Тип файла: png Сводная.png (2.8 Кб, 4 просмотров)
invm
2522 / 1610 / 542
Регистрация: 02.06.2013
Сообщений: 3,981
16.01.2020, 14:33 3
Лучший ответ Сообщение было отмечено carga2 как решение

Решение

pivot или sum(case when ... end)
1
carga2
6 / 6 / 4
Регистрация: 07.11.2013
Сообщений: 244
16.01.2020, 15:44  [ТС] 4
invm,
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
    select Article, [Desc], A as [count a], B as [count b]
    from (
        select  c.Article, c.[Desc], o.Quantity, s.Status
        from Common c
        join [Order] o
        on o.Article = c.Article
        join [dbo].[Status] s
        on s.OrderNum = o.Num
        ) t
    PIVOT ( SUM(Quantity)
            FOR Status IN ( A, B )
            ) p
а как еще добавить данные из Warehouse?
0
invm
2522 / 1610 / 542
Регистрация: 02.06.2013
Сообщений: 3,981
16.01.2020, 15:55 5
Цитата Сообщение от carga2 Посмотреть сообщение
а как еще добавить данные из Warehouse?
Приджойнить после pivot.
1
carga2
6 / 6 / 4
Регистрация: 07.11.2013
Сообщений: 244
16.01.2020, 16:24  [ТС] 6
Все получилось
T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    select t1.Article, t1.[Desc], SUM(w.Quantity) as Z, t1.[count a], t1.[count b]
    from (
    select Article As [Article], [Desc] as [Desc], A as [count a], B as [count b]
    from (
        select  c.Article, c.[Desc], o.Quantity, s.Status
        from Common c
        join [Order] o
        on o.Article = c.Article
        join [dbo].[Status] s
        on s.OrderNum = o.Num
        ) t
    PIVOT ( SUM(Quantity)
            FOR Status IN ( A, B )
            ) p
            ) t1
    LEFT JOIN Warehouse w
    on w.Article = t1.Article
    group by t1.Article, t1.[Desc], t1.[count a], t1.[count b]
0
invm
2522 / 1610 / 542
Регистрация: 02.06.2013
Сообщений: 3,981
16.01.2020, 16:45 7
carga2, можно было не оборачивать в t1, а сразу джойнить после pivot.
0
16.01.2020, 16:45
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2020, 16:45

Сводная таблица
Добрый вечер. Прошу помощи. Уже облазил все, что мог. На везде примеры с умножением, удалением...

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

Сводная таблица
Формирую сводную таблицу на основе таблицы: |Месяц|№обьекта|Значение| Надо отразить информацию...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.