SQL где бывает в разных группах - PullRequest
0 голосов
/ 17 октября 2018
select * from table1
where 
(
    (
    --group1
    amount_1 > 0
    or 
    amount_2 > 0
    or 
    amount_3 > 0
    )
or
   (
    --group2
    amount_4 > 0
    or 
    amount_5 > 0
    or 
    amount_6 > 0
   )
)
or
  amount_7 > 0
;

Выше предварительное заявление sql.Мне нужно добавить функцию, в которой можно использовать как минимум три суммы из обеих групп или более, и как минимум одно количество каждой группы (group1 и group2).

Пример 1: если значения group1 1-3 меньше 0затем используйте сумму_7.

Пример 2: если группа1 сумма_1 больше нуля, а группа2 сумма_5 и сумма_6 больше нуля, тогда используйте количество_1, количество_5, количество_6.

Должен ли я использовать некоторую структуру дел и дать 1 и 0, когда сумма больше 0 или как?

В этом примере суммы являются предварительно суммированными продажами, больше нет необходимости суммировать.

Ответ - это что-то вроде этого, все еще тестирование ....

select * from table1
where 
(
    (
    --group1
   case when

    (case when amount_1 > 0 then 1 else 0 end)
    + 
    (case when amount_2 > 0 then 1 else 0 end)
    + 
    (case when amount_3 > 0 then 1 else 0 end)

    > 0 

    then 

     (
        --group1
        amount_1 > 0
        or 
        amount_2 > 0
        or 
        amount_3 > 0
        )

    else null end

    )
or
   (
    --group2
    (case when amount_4 > 0 then 1 else 0 end)
    + 
    (case when amount_5 > 0 then 1 else 0 end)
    + 
    (case when amount_6 > 0 then 1 else 0 end)

    > 0 

    then 

         (
     --group2
        amount_4 > 0
        or 
        amount_5 > 0
        or 
        amount_6 > 0
    )
    else null end
   )
)
or
  amount_7 > 0
;

или более простое решение:

select * from table1
where 
(
    (
    --group1
    amount_1
    +
    amount_2 
    + 
    amount_3 
    >0
    )
and
   (
    --group2
    amount_4
    +
    amount_5
    +
    amount_6
    >0
   )
)
or
  amount_7 > 0
;
...