Разница между двумя таблицами в сумме строк на основе созданного нового столбца ИЛИ по сравнению с существующим столбцом - PullRequest
0 голосов
/ 29 сентября 2018

Итак, у меня есть две таблицы с одинаковыми столбцами, которые я хочу сравнить между собой двумя конкретными столбцами на предмет различий в данных. Первый подход не равен Второму подходу , второй подход правильный, почему?

  • Первый подход : добавить столбецназванный тег равен 1 на обоих.Затем выполните внутреннее объединение этих столбцов: SUM (A.fq1 - B.fq2) Если есть результат, тогда есть разница.

  • Второй подход :Один существующий столбец, для которого я могу выполнить внутреннее соединение, - это ProductId.Тогда тот же самый подход, но условие Внутреннего соединения на ProductId.В результате для каждого продукта вычитается все.

Второй подход правильно показывает мне разницу между обеими таблицами для каждого конкретного ProductId.Но первый нет, который показывает мне для всех строк.Почему это?

Первый подход код: для лучшего контекста в этом примере: table3 == (table2-table1)

   out0 =
    SELECT 
        SUM(fq1) AS fq1,
        SUM(fq2) AS fq2,
           1 AS Tag
    FROM table3
    WHERE Date == @DayToValidate;
 
out1 =
    SELECT 
        SUM(fq1) AS fq1,
        SUM(fq2) AS fq2,
           1 AS Tag
    FROM table1;
 
out2 =
    SELECT 
        SUM(fq1) AS fq1,
        SUM(fq2) AS fq2,
           1 AS Tag
    FROM table2;
 
out3 =
    SELECT 
        (A.fq1- B.fq1) AS fq1diff,
        (A.fq2- B.fq2) AS fq2diff,
           1 AS Tag
    FROM out2 AS A
         INNER JOIN
             out1 AS B
         ON A.Tag == B.Tag;

 
out4 =
    SELECT (A.fq1diff - B.fq1) AS fq1Diff,
           (A.fq2diff - B.fq2) AS fq2Diff,
           1 AS Tag
    FROM out3 AS A
         INNER JOIN
             out0 AS B
         ON A.Tag == B.Tag;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...