Есть ли способ, которым я могу выполнить group by
и использовать не значение для столбца, если таковые имеются. * 1002 т.е. *
a | b | c | d | e | f |
---------------------------------------------------
1 | 2 | 3 | x | test1 | 2019-07-01 07:17:01 |
1 | 2 | 3 | NULL | test2 | 2019-07-01 10:23:11 |
1 | 2 | 3 | NULL | test3 | 2019-07-01 22:00:51 |
1 | 2 | 7 | NULL | testTet | 2019-07-01 23:00:00 |
В моем случае выше, если присутствует d
, скажем, a=1,b=2,c=3
, оно всегда будет x
, иначе оно может быть нулевым. Так что мой запрос будет выглядеть как
select a,
b,
c,
d,
count(distinct e) as something
from tableX
where f between '2019-07-01 00:00:00' and '2019-07-01 23:59:59.999'
group by a,
b,
c,
d
результаты будут:
a | b | c | d | something |
------------------------------|
1 | 2 | 3 | x | 1 |
1 | 2 | 3 | NULL | 2 |
1 |2 | 7 | NULL | 1 |
тогда как было бы замечательно, если бы я мог иметь (поскольку для каждой комбинации group by
я знаю, что она равна нулю или это уникальное значение, если присутствует):
a | b | c | d | something |
------------------------------|
1 | 2 | 3 | x | 3 |
1 | 2 | 7 | NULL | 1 |