Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过SQLFiddle进行不同计数_Sql_Sql Server_Sqlfiddle - Fatal编程技术网

通过SQLFiddle进行不同计数

通过SQLFiddle进行不同计数,sql,sql-server,sqlfiddle,Sql,Sql Server,Sqlfiddle,这似乎很奇怪: 这两个用户完全不同,即12。那么为什么不同的计数是1呢?user是一个保留关键字。如果您运行: select DateKey, User from the_table 您将看到该用户不是1或2,而是类似于user\u b1234。与Lamak建议的一样,使用[user]引用列,而不是系统变量。user是保留关键字。如果您运行: select DateKey, User from the_table 您将看到该用户不是1或2,而是类似于user\u b1234。就像拉马克建议的

这似乎很奇怪:


这两个用户完全不同,即12。那么为什么不同的计数是1呢?

user
是一个保留关键字。如果您运行:

select DateKey, User from the_table

您将看到该用户不是
1
2
,而是类似于
user\u b1234
。与Lamak建议的一样,使用
[user]
引用列,而不是系统变量。

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

select DateKey, User from the_table
您将看到该用户不是
1
2
,而是类似于
user\u b1234
。就像拉马克建议的那样,使用
[user]
引用列,而不是系统变量。

我想您需要:

select 
    COUNT(DateKey)
    ,count(distinct User) Cnt
from the_table
where Datekey = 20120103
group by 
    DateKey
我想你想要这个:

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

您想使用
distinct[User]

用户是一个特殊的词


您想使用
distinct[User]

用户是一个特殊的词


这里有一个答案和一些解释

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

  • 它计算为当前数据库用户的名称。因此,每一行将获得相同的值,计数(distinct user)为1

  • 用户生成与系统定义的User_NAME()函数相同的值


所以,如果您希望用户被视为列名,请按照其他人的建议以及您在create table语句中所做的那样编写[User]。

下面是一个答案,并给出一些解释

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

  • 它计算为当前数据库用户的名称。因此,每一行将获得相同的值,计数(distinct user)为1

  • 用户生成与系统定义的User_NAME()函数相同的值


所以,如果您希望用户被视为列名,请按照其他人的建议编写[User],就像您在create table语句中所做的那样。

@Lamak…不错的一个;我以为我疯了!此外,我不知道这是否是一个学术练习,但我肯定会专注于使用适当的数据类型(datetime)。@swasheck?!不是学术性的,希望生活是这样,我们有一个1000GB的仓库,使用
DateKey INT
。。。使用该类型可以节省空间key@whytheq你认为INT比DATE需要更少的存储空间吗?@CadeRoux我很好奇为什么
INT
SMALLDATETIME
更受欢迎,甚至在SQL Server 2008之前。相同的存储大小,但仍然允许所有的日期/时间操作、自动验证等。使用
INT
键,您可以将
20120230
推入其中,除非您有复杂的约束或触发器-并且您在
SMALLDATETIME
列中的
2012-02-28
上没有任何收获@拉马克……不错;我以为我疯了!此外,我不知道这是否是一个学术练习,但我肯定会专注于使用适当的数据类型(datetime)。@swasheck?!不是学术性的,希望生活是这样,我们有一个1000GB的仓库,使用
DateKey INT
。。。使用该类型可以节省空间key@whytheq你认为INT比DATE需要更少的存储空间吗?@CadeRoux我很好奇为什么
INT
SMALLDATETIME
更受欢迎,甚至在SQL Server 2008之前。相同的存储大小,但仍然允许所有的日期/时间操作、自动验证等。使用
INT
键,您可以将
20120230
推入其中,除非您有复杂的约束或触发器-并且您在
SMALLDATETIME
列中的
2012-02-28
上没有任何收获!我猜
date
是一个保留较少的关键字,但我仍然会将它括在
[]
:)我猜
date
是一个保留较少的关键字,但我仍然会将它括在
[]
:)