这看起来很奇怪:[SQL FIDDLE]
这两个用户肯定是不同的,即 1<>2。那么为什么不同的计数说 1 ?
user
是保留关键字。如果你运行:
select DateKey, User from the_table
您会看到用户不是1
or 2
,而是类似user_b1234
. 就像 Lamak 建议的那样,使用[user]
来引用列而不是系统变量。
这是一个带有一些解释的答案...
用户不仅仅是一个保留字。它更像是一个系统定义的只读全局变量。
它评估为当前数据库用户的名称。所以每一行都会得到相同的值,并且 count(distinct user) 是 1。
User produces the same value as the system defined USER_NAME() function.
So if you want User to be treated as a column name, write [User] as others have suggested, and as you did in your create table statement.
我想你想要这个:
select
COUNT(DateKey)
,count(distinct User) Cnt
from the_table
where Datekey = 20120103
group by
DateKey