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