Как выбрать компанию, в которой есть две группы - PullRequest
0 голосов
/ 06 апреля 2020

Я все еще пытался выбрать всех клиентов, которые входят в две группы. Дублирование от клиентов является нормальным, потому что выберите из счета-фактуры, но мне нужно знать клиентов, которые имели группу в первом полугодии и перешли к другому во втором полугодии.

Пример:

SELECT
  f.eankod as kod,                                              --(groups)
  ad.kod as firma,                                              --(markComp)
  f.nazfirmy as nazev,                                          --(nameComp)
  COUNT(ad.kod),
  sum(f.sumZklZakl + f.sumZklSniz + f.sumOsv) as cena_bez_dph   --(Price)
FROM
  ddoklfak as f
LEFT OUTER JOIN aadresar ad ON ad.idfirmy = f.idfirmy 
WHERE
  f.datvyst >= '2017-01-01'
  and f.datvyst <= '2017-12-31'
  and f.modul like 'FAV'
GROUP BY
  f.eankod,
  ad.kod,
  f.nazfirmy
HAVING COUNT (ad.kod) > 1
order by
  ad.kod

Результат:

 GROUP   markcomp  nameComp    price
| D002 | B5846 | Cosmopolis | price ... |
| D003 | B6987 | Tismotis   | price ... |
| D009 | B8974 | Teramis    | price ... |
| D006 | B8876 | Kesmethis  | price ... | I need this, same company but diferent group, because this 
| D008 | B8876 | Kesmethis  | price ... | company jumped. I need know only jumped company. (last two rows from examples)

Спасибо за помощь.

1 Ответ

1 голос
/ 06 апреля 2020

Вы можете использовать CTE, чтобы узнать, какие nameComp появляются несколько раз, и сохранить только эти. Например:

with
x as (
  -- your query
)
select * from x where nameComp in (
  select nameComp from x group by nameComp having count(*) > 1
)
...