У меня есть 2 запроса: первый покажет акции, а второй - продажи.
--STOCK DEPOT
SELECT GQ_ARTICLE AS 'CODE ARTICLE',
SUM (GQ_PHYSIQUE)
FROM DISPO
GROUP BY GQ_ARTICLE
--SALES IN 6 MONTHS
--UNION ALL
SELECT GL_CODEARTICLE AS 'CODE ARTICLE',
SUM(GL_QTEFACT)AS 'SOLD QUANTITY'
FROM GCLIGNEARTDIM
WHERE
DATEADD(M, 6, GP_DATEPIECE) > getdate()
GROUP BY GL_CODEARTICLE
Я попытался объединить ALL для объединения двух запросов, но это заняло много времени. даже я беру всего 1 день.
Любое решение, пожалуйста?
Я хочу такой результат:
GQ_ARTICLE SUM (GQ_PHYSIQUE) SUM (GQ_PHYSIQUE)
xxxx 24 50
Согласно результатам, которые вы хотите, вам не нужно UNION/UNION ALL, я думаю, вы после Коррелированный подзапрос


Объединение между двумя совершенно не связанными таблицами:
select
FirstName as Column1,
LastName as Column2,
email as Column3,
null as Column4
from
stock
union
select
ProductName as Column1,
QuantityPerUnit as Column2,
null as Column3,
UnitsInStock as Column4
from
product
union all может работать немного лучше, чем union Кроме того, в этом случае, вероятно, все равно не будет дубликатов
Кажется, вам нужен full join, а не union all, потому что вам нужны результаты в одной строке:
SELECT COALESCE(l.CODE_ARTICLE, d.CODE_ARTICLE) as CODE_ARTICLE,
d.SUM_PHYSIQUE, l.SOLD_QUANTITY
FROM (SELECT GQ_ARTICLE AS CODE_ARTICLE, SUM(GQ_PHYSIQUE) as SUM_PHYSIQUE
FROM DISPO
GROUP BY GQ_ARTICLE
) d FULL JOIN
(SELECT GL_CODEARTICLE AS CODE_ARTICLE, SUM(GL_QTEFACT) AS SOLD_QUANTITY
FROM GCLIGNEARTDIM
WHERE GP_DATEPIECE > DATEADD(month, -6, getdate())
GROUP BY GL_CODEARTICLE
) l
ON l.CODE_ARTICLE = d.CODE_ARTICLE;
Обратите внимание на изменение условия WHERE во втором запросе. Это позволит запросу использовать преимущества индексов и разделов, если это необходимо.
если столбцы GQ_ARTICLE и GL_CODEARTICLE относятся к одному и тому же, вы можете просто соединить таблицы и использовать оператор case. например
SELECT GQ_ARTICLE AS 'CODE ARTICLE',
SUM (GQ_PHYSIQUE),
SUM(CASE WHEN DATEADD(M, 6, GP_DATEPIECE) > getdate() THEN GL_QTEFACT ELSE 0 END)
FROM DISPO
JOIN GCLIGNEARTDIM
ON GQ_ARTICLE=GL_CODEARTICLE
GROUP BY GQ_ARTICLE
Редактировать - вам может понадобиться LEFT/RIGHT/FULL OUTER Join здесь в зависимости от ваших данных... Хотя это легко изменить...
Определите "это не сработало", возможно, вы ищете
UNION ALL