1

这看起来很奇怪:[SQL FIDDLE]

这两个用户肯定是不同的,即 1<>2。那么为什么不同的计数说 1 ?

4

4 回答 4

4

你想用distinct [User]

用户是一个特殊的词

http://sqlfiddle.com/#!3/b4130/20

于 2012-06-25T20:29:00.493 回答
3

user是保留关键字。如果你运行:

select DateKey, User from the_table

您会看到用户不是1or 2,而是类似user_b1234. 就像 Lamak 建议的那样,使用[user]来引用列而不是系统变量。

于 2012-06-25T20:27:09.117 回答
3

这是一个带有一些解释的答案...

用户不仅仅是一个保留字。它更像是一个系统定义的只读全局变量。

  • 它评估为当前数据库用户的名称。所以每一行都会得到相同的值,并且 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.

于 2012-06-25T20:49:00.420 回答
0

我想你想要这个:

select 
    COUNT(DateKey)
    ,count(distinct User) Cnt
from the_table
where Datekey = 20120103
group by 
    DateKey

http://sqlfiddle.com/#!3/b4130/14/0

于 2012-06-25T20:27:32.067 回答