Гость
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Сумма группы / 11 сообщений из 11, страница 1 из 1
15.12.2014, 13:39
    #38834082
Vovsla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма группы
Есть таблица
"CREATE TABLE IF NOT EXISTS SelectedGoods (GoodsCode NUMERIC NOT NULL, GoodsQuantity NUMERIC NOT NULL, WarehouseNum NUMERIC NOT NULL, GoodsShipment NUMERIC NOT NULL, UNIQUE(GoodsCode, GoodsShipment, WarehouseNum) )

Необходимо получить GoodsCode, GoodsShipment, (сумму для каждой группы GoodsCode, WarehouseNum), GoodsQuantity, WarehouseNum

Есть данные:
GoodsCode GoodsShipment GoodsQuantity WarehouseNum
1108571 | 1649250 1 |30605
1108571 | 1657820 1 |30605
1136143 | 1651233 1 |30605

Делаю выборку из таблицы
"SELECT GoodsCode, GoodsShipment, (SELECT SUM(GoodsQuantity) FROM SelectedGoods GROUP BY GoodsCode, WarehouseNum), GoodsQuantity, WarehouseNum FROM SelectedGoods GROUP BY GoodsCode, GoodsShipment ORDER BY WarehouseNum ;"

Полученные данные прикреплены картинкой.
Получается что сумма первой группы GoodsCode, WarehouseNum распространяется на все последующие строки.
Как построить запрос чтобы сумма этой группы указывалась для каждой строчки отдельно?
...
Рейтинг: 0 / 0
15.12.2014, 13:52
    #38834099
Сумма группы
Vovsla,

как минимум - нужно указать связь между внешним запросом и вложенным подзапросом.
...
Рейтинг: 0 / 0
15.12.2014, 13:54
    #38834101
Vovsla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма группы
Как это сделать?
...
Рейтинг: 0 / 0
15.12.2014, 13:57
    #38834105
Сумма группы
Vovsla,

путем добавления условия WHERE в подзапрос.
...
Рейтинг: 0 / 0
15.12.2014, 14:02
    #38834109
Сумма группы
Vovsla
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT GoodsCode, GoodsShipment, 
       (SELECT SUM(GoodsQuantity) FROM SelectedGoods t1 
           where t1.WarehouseNum= t.WarehouseNum and t.GoodsCode = t.GoodsCode
       ), 
       GoodsQuantity, WarehouseNum 
  FROM SelectedGoods t
 GROUP BY GoodsCode, GoodsShipment 
 ORDER BY WarehouseNum  ;
...
Рейтинг: 0 / 0
15.12.2014, 14:04
    #38834113
Сумма группы
пардон, ошибочка закралась. вот так оно будет правильнее:
Добрый Э - ЭхVovsla
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT GoodsCode, GoodsShipment, 
       (SELECT SUM(GoodsQuantity) FROM SelectedGoods t1 
           where t1.WarehouseNum= t.WarehouseNum and t1.GoodsCode = t.GoodsCode
       ), 
       GoodsQuantity, WarehouseNum 
  FROM SelectedGoods t
 GROUP BY GoodsCode, GoodsShipment 
 ORDER BY WarehouseNum  ;
...
Рейтинг: 0 / 0
15.12.2014, 14:51
    #38834165
Vovsla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма группы
Большое спасибо, работает.
А можно еще сделать так чтобы в результате не выводились строки с одинаковыми "GoodsCode" и разными "WarehouseNum"?
Т.е.
GoodsCode | WarehouseNum
1108571 | 30605 - выводится
1108571 | 30605 - выводится
1108571 | 30777 - НЕ выводится
1108333 | 30605 - выводится
1108333 | 30777 - НЕ выводится
1108444 | 30777 - выводится
...
Рейтинг: 0 / 0
15.12.2014, 17:56
    #38834430
Сумма группы
Vovsla,

можно, если ты сможешь объяснить, почему в случае с GoodsCode = 1108333 ты берешь запись именно с WarehouseNum = 30605 , а не с WarehouseNum = 30777
...
Рейтинг: 0 / 0
16.12.2014, 11:14
    #38834818
Vovsla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма группы
Там где "GoodsCode = 1108333" можно взять "WarehouseNum = 30605" или "WarehouseNum = 30777" это не важно, главное чтобы они не выводились одновременно.
...
Рейтинг: 0 / 0
17.12.2014, 06:32
    #38835653
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма группы
VovslaТам где "GoodsCode = 1108333" можно взять "WarehouseNum = 30605" или "WarehouseNum = 30777" это не важно, главное чтобы они не выводились одновременно.В таком случае, задача принципиально не решаемая.
...
Рейтинг: 0 / 0
18.12.2014, 11:13
    #38836774
Vovsla
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сумма группы
Видимо придется оставить решение этой проблемы в виде обработки массива вне SQL.
Спасибо.
...
Рейтинг: 0 / 0
Форумы / SQLite [игнор отключен] [закрыт для гостей] / Сумма группы / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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