Соедините значение SUM строк "не равно" - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть две таблицы, к которым мне нужно присоединиться, как показано ниже:

enter image description here

Проще говоря, мне нужно найти значение SUM строк из таблицы 2, где значения POLE не равны значению в таблице 1. Какой запрос будет работать?

Вы можете скачать электронную таблицу по этой ссылке.

Ответы [ 3 ]

0 голосов
/ 26 апреля 2018
select *
from table1 t
    cross apply (
        select sum(t2.oh) as oh_oth, sum(t2."max") as max_oth
        from table2 t2
        where t2.pole <> t.pole
    ) oth
0 голосов
/ 27 апреля 2018

Ответ Цетина возвращает ожидаемый набор ответов, но может быть более эффективно объединить оба скалярных подзапроса в один:

WITH cte AS 
 ( -- calculate both MAX & SUM using a Cross Join
   SELECT t1.pole
      ,Sum(t2.oh) AS otherSum
      ,Max(t2.[Max]) AS otherMax
   FROM table2 AS t2 CROSS JOIN table2 AS t1
   WHERE t2.Pole <> t1.Pole
   GROUP BY t1.pole
 )
SELECT t1.*, cte.otherSum, cte.otherMax
FROM table1 AS t1
LEFT JOIN cte -- can be an Inner Join if all POLEs exist in both tables 
  ON t1.pole = cte.pole
0 голосов
/ 26 апреля 2018
select t1.Pole, t1.Org, t1.Item, t1.OH, t1.[MAX],
(select sum(OH) from table2 t2 where t2.Pole <> t1.Pole) as [OH in other poles],
(select sum([MAX]) from table2 t2 where t2.Pole <> t1.Pole) as [MAX in other poles]
from table1 t1;
...