Различные строки для результатов при использовании оператора SQL для одного и того же значения - PullRequest
0 голосов
/ 30 мая 2019

Результат должен быть в одной строке с зарегистрированными и не вошедшими счетами.Почему он входит в две разные строки для одной учетной записи?

SELECT distinct  Account
     , SUM(CASE Val WHEN status='logged in' THEN  1 Else 0  END) AS 'Total logged in' 
     , SUM(CASE Val WHEN status='not logged in' THEN  1 Else 0 END) AS 'total not logged in '
FROM TableAccount 
GROUP BY Account

account    logged in    not logged in
A            21             0
A            0              2

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

SELECT DISTINCT почти никогда не требуется с GROUP BY.Кроме того, вы правы, для 'A' должна быть только одна строка - при условии, что учетная запись точно такая же.

Тот факт, что вы получаете две строки, означает, что они не совпадают.Одной из проблем могут быть конечные пробелы.Вы можете проверить это:

SELECT DISTINCT '|' +  Account + '|'
FROM TableAccount ;

Другими проблемами могут быть символы, которые выглядят одинаково, или скрытые символы.Для поиска проблемы может потребоваться некоторое расследование.

0 голосов
/ 30 мая 2019

Это, кажется, дает желаемый результат, если структура вашей таблицы такая же.

create table test1(col1 varchar(10), col2 varchar(10))

insert into test1
values('A','L'),
('A','NL'),
('A','L'),
('A','L')

SELECT distinct  col1
     , SUM(CASE WHEN col2='L' THEN  1 Else 0  END) AS 'Total logged in' 
     , SUM(CASE WHEN col2='NL' THEN  1 Else 0 END) AS 'total not logged in '
FROM test1 
GROUP BY col1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...