Итоги SQL сгруппированы в один столбец - PullRequest
0 голосов
/ 11 февраля 2012

У меня есть такая таблица SQLite [MainTable]:

Date        | Machine | Product | Scrap
---------------------------------------
2012-02-06  | M1      | P1      | 100 
2012-02-06  | M2      | P1      | 110 
2012-02-06  | M2      | P2      | 200 
2012-02-07  | M3      | P3      | 300

и я хочу получить запрос, который выдает такой результат:

Type         | Total         | Scrap
------------------------------------
Machine      | M1            | 100
Machine      | M2            | 310
Machine      | M3            | 300
Product      | P1            | 210
Product      | P2            | 200
Product      | P3            | 300
Date         | 2012-02-06    | 410
Date         | 2012-02-07    | 300
Date-Machine | 2012-02-06 M2 | 310

Моя проблема заключается в том, что если я использую UNION ALL для получения итогов, запрос часто просматривается в [MainTable]. Я хочу вычислить все суммы в одном поиске, чтобы повысить скорость, используя запрос SQLite вместо кода Java.

Мне нужно это только в SQLite, а не на другом движке.

1 Ответ

0 голосов
/ 11 февраля 2012

Создайте новую таблицу со столбцами Type, Total и Scrap, а затем вставьте нужные данные с помощью отдельных операторов SQL, например:

шаг первый: создайте newTable с этими столбцами: (type, total,записка)

шаг второй: запустите эти операторы:

INSERT INTO newTable 
SELECT "machine" as type, machine, sum(scrap) 
from yourFirstTable;

INSERT INTO newTable 
SELECT "product" as type, product, sum(scrap) 
from yourFirstTable;

или, если вам нужно все это в одном запросе, вы можете сделать что-то вроде этого:

SELECT "machine" as type, machine, sum(scrap) 
from yourFirstTable
UNION
SELECT "product" as type, product, sum(scrap) 
from yourFirstTable

и т. д....

Вы также можете присоединиться к одной и той же таблице несколько раз и получить один и тот же результат:

SELECT TYPE, ITEM, sum(scrap) as sumTot
FROM   (SELECT "machine" as type, machine as item,  scrap from yourFirstTable) as A,
       (SELECT "machine" as type, product as item,  scrap) as B
GROUP BY TYPE, ITEM
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...