Отдельный запрос с оператором суммы не работает? - PullRequest
0 голосов
/ 21 марта 2012

У меня есть вопрос, у меня есть этот запрос, где я должен получить итоговую группу по PIX_SKU.Моя проблема здесь в том, что удваивает количество, любая помощь будет благодарна.

SELECT DISTINCT(A2.PIX_SKU), A2.PIX_DATE, SUM(A1.ID_QTY) AS TOTAL
FROM IDCASE00_EXTRACT A1,PX_CLEAN A2
WHERE A1.ID_SKU = A2.PIX_SKU
GROUP BY A2.PIX_SKU, A2.PIX_DATE

Вот некоторые данные для таблицы IDCASE00_EXTRACT

   id_sku                  id_ty       
301110  39  8               3266         
301110  39  8               1788         
301112  90  1               4           
301185  20  6               6580        
301185  20  6               22028       

Вот некоторые данные для таблицы PX_CLEAN

  pix_sku           pix_date
301110  39  8       20120203
301112  90  1       20120204
301185  20  6       20120320
301110  39  8       20120301
301185  20  6       20120209

Ответы [ 3 ]

5 голосов
/ 21 марта 2012

Ваше объединение - проблема ...

В IDCASE00_EXTRACT у вас есть две строки, где id_sku = 301110 39 8.

В PX_CLEAN у вас также есть две строки, где pix_sku = 301110 39 8.

Поэтому, когда вы присоединяетесь к id_sku = pix_sku, вы генерируете 4 строки (2 * 2).

Так что совпадение, объединяющее две таблицы, в настоящее время не является уникальным - есть ли в IDCASE00_EXTRACT дата, которая должна соответствовать pix_date в PX_CLEAN?

2 голосов
/ 21 марта 2012

Этот запрос должен подсчитать сумму по каждому SKU:

SELECT Q.ID_SKU, SUM(Q.ID_qty) AS TOTAL
FROM   IDCASE00_EXTRACT AS Q
GROUP BY Q.ID_SKU

Что вы собираетесь делать с pix_date?Для чего используются эти данные?

Единственная другая информация, которую вы можете получить, о которой я могу подумать:

SELECT T.ID_SKU, T.TOTAL, PX.pix_date
FROM
     (  
     SELECT Q.ID_SKU, SUM(Q.ID_qty) AS TOTAL
     FROM   IDCASE00_EXTRACT AS Q
     GROUP BY Q.ID_SKU
     ) 
     AS T JOIN PX_CLEAN AS PX ON (T.ID_SKU = PX.pix_sku)

В любом случае, вы должны уточнить, какую информацию вы хотите получить.

0 голосов
/ 22 марта 2012

Этот запрос:

SELECT pix_sku, SUM(id_qty) AS QuantityTotal
FROM @PX_CLEAN AS P
    JOIN @IDCASE00_EXTRACT AS Q ON (Q.id_sku = P.pix_sku)
GROUP BY pix_sku

будет получать такие результаты:

  • SKU | ИТОГО
  • 301110 39 8 |10108
  • 301112 90 1 |4
  • 301185 20 6 |57216

Для каждого SKU у вас есть общее количество.

Что именно вы хотите получить от pix_date?При агрегировании у вас есть только ONE sku, но для каждого SKU все еще есть несколько дат.Что ты пытаешься получить?что вы хотите знать?

Вам следует перестать думать о функции DISTINCT.Эта функция удаляет только те же самые строки из результатов запроса.Это помогает, только если у вас есть результаты, которые вы хотите - но есть несколько строк, которые одинаковы.Механизм запросов не «поймет» ваши пожелания и просто выдаст 1 строку для каждого SKU с отличительными характеристиками, что может быть достигнуто только путем агрегирования (group by).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...