Sql 为什么我没有得到一个明确的分组?

Sql 为什么我没有得到一个明确的分组?,sql,sql-server,Sql,Sql Server,这不应该返回列存储区的不同分组吗?我的结果是同一存储的多个条目。要获得不同的存储: SELECT "STORE VISIT",STORE,USERVISITED FROM ECRSURVEY WHERE "STORE VISIT" > '2014-01-01 00:00:00.000' GROUP BY STORE, "STORE VISIT", UserVisited 或 或 若对其他两个字段进行聚合,则应获得唯一的行 SELECT DISTINCT STORE FROM

这不应该返回列存储区的不同分组吗?我的结果是同一存储的多个条目。

要获得不同的
存储

SELECT "STORE VISIT",STORE,USERVISITED 
FROM ECRSURVEY 
WHERE "STORE VISIT" > '2014-01-01     00:00:00.000'
GROUP BY STORE, "STORE VISIT", UserVisited

若对其他两个字段进行聚合,则应获得唯一的行

SELECT DISTINCT STORE 
FROM   ECRSURVEY 
WHERE  "STORE VISIT" > '20140101'
但如果您的数据结构如下所示,那么您就是在要求不可能的结果:


您得到的是
STORE、“STORE-VISIT”和uservisted的独特组合。什么是
uservisted
?将
groupby
更改为
groupby-STORE
。您能给我们一个查询来创建您的表并在其中插入一些示例行吗?另外,您的预期输出是什么?您可能想了解工作原理。如果我这样做,我无法获得我需要的其他两列的数据。只返回存储列。我需要这三个字段。如果我只尝试按存储分组,我会收到一个错误,因为其他两个字段不在group by子句中。返回的多行是否完全相同?或者他们在“商店访问”和“用户访问”中有不同的值吗?为什么EQ在尝试获得不同的商店时选择正确。如果您试图获得一个不同的存储,数据如whytheq的不可能表所示,您是否希望其他值以逗号分隔?如果是,请查看以下内容中的答案:
SELECT DISTINCT STORE 
FROM   ECRSURVEY 
WHERE  "STORE VISIT" > '20140101'
SELECT STORE 
       NumStoreVisit = COUNT("STORE VISIT"), 
       NumUserVisited = COUNT(UserVisited)
FROM   ECRSURVEY 
WHERE  "STORE VISIT" > '20140101'
GROUP BY STORE