使用 SQL 相同值的 case 语句时结果行不同
Different rows for results while using the SQL case statement for same value
结果应该在一行中,包含登录和未登录计数。为什么同一帐户出现在不同的两行中?
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
如果您的 table 结构相同,这似乎给出了所需的结果。
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
SELECT DISTINCT
几乎不需要 GROUP BY
。另外,你是对的,'A'
应该只有一行——假设帐户完全相同。
您得到两行的事实意味着它们不相同。一个问题可能是尾随空白。您可以检查一下:
SELECT DISTINCT '|' + Account + '|'
FROM TableAccount ;
其他问题可能是字符看起来相同或隐藏字符。查找问题可能需要一些调查。
结果应该在一行中,包含登录和未登录计数。为什么同一帐户出现在不同的两行中?
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
如果您的 table 结构相同,这似乎给出了所需的结果。
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
SELECT DISTINCT
几乎不需要 GROUP BY
。另外,你是对的,'A'
应该只有一行——假设帐户完全相同。
您得到两行的事实意味着它们不相同。一个问题可能是尾随空白。您可以检查一下:
SELECT DISTINCT '|' + Account + '|'
FROM TableAccount ;
其他问题可能是字符看起来相同或隐藏字符。查找问题可能需要一些调查。