2012-06-25 45 views
1

这似乎不可思议:[SQL FIDDLE]重复计数通过SQLFiddle

两个用户是绝对不同的即1 <> 2。那么为什么不同的数字说1?

+3

使用'COUNT(DISTINCT [User])' – Lamak

+0

@Lamak ...不错的一个;以为我疯了! – whytheq

+0

此外,我不知道这是否是一个学术练习,但我肯定会专注于使用适当的数据类型(日期时间)。 – swasheck

回答

3

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

select DateKey, User from the_table 

,你会看到,用户不是12,但类似user_b1234。像Lamak建议的那样,使用[user]来引用列而不是系统变量。

+1

'日期'是好的:[小提琴](http://sqlfiddle.com/#!3/548e1/3) – whytheq

+1

我猜'日期'是一个不太保留的关键字,但我仍然把它放在' ]':) – Andomar

+0

大声笑...'不太保留的词'喜欢它+1 Sir – whytheq

3

这里有一些答案前平面...

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

  • 它计算为当前数据库用户的名称。因此,每一行都会得到相同的值和计数(不同的用户)为1.

  • 用户产生与系统定义的USER_NAME()函数相同的值。

所以,如果你想用户被视为列名,写[用户]如其他人所说,正如你在做你的CREATE TABLE语句。