Sql Server 2012错误8120。简单select查询中的group by错误

Sql Server 2012错误8120。简单select查询中的group by错误,sql,sql-server,Sql,Sql Server,这是我的表创建代码 CREATE TABLE "transactions" ( "id" INT NOT NULL, "tno" INT NOT NULL, "pno" INT NOT NULL, "sno" INT NOT NULL, "accode" INT NOT NULL, "acname" VARCHAR(50) NOT NULL, "date" DATE NOT NULL, "truck" VARCHAR(5

这是我的表创建代码

      CREATE TABLE "transactions" (
    "id" INT NOT NULL,
    "tno" INT NOT NULL,
    "pno" INT NOT NULL,
    "sno" INT NOT NULL,
    "accode" INT NOT NULL,
    "acname" VARCHAR(50) NOT NULL,
    "date" DATE NOT NULL,
    "truck" VARCHAR(50) NULL,
    "weight" DECIMAL NULL,
    "quality" INT NULL,
    "debit" MONEY NOT NULL,
    "credit" MONEY NOT NULL,
    "amount" MONEY NOT NULL,
    "comment" TEXT NULL,
    PRIMARY KEY ("id")
);
我想通过这个查询从这个表中获取一些数据

 Select * from  transactions GROUP BY tno
但它给了我一个错误:

Msg 8120, Level 16, State 1, Line 1
Column 'transactions.tno' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
最后我找到了解决办法。我的答案是

   select yt.id, yt.tno, yt.accode, yt.acname, yt.pno, yt.comment, yt.amount, yt.date from transactions yt inner join( select tno, max(id) id from transactions ss group by tno ) ss on yt.id = ss.id and yt.tno = ss.tno order by yt.tno desc

GROUP BY允许您收集有关数学运算的数据,并在非数学运算下收集这些数据

比如说

SELECT truck, SUM(tno)
FROM transactions
GROUP BY truck
将为您的表中的每种类型的“卡车”提供TNO字段的总值。这里的数学运算符是SUM

因此,如果您的表包含以下内容:

truck   tno
------------
dodge    44
viper    33
dodge    22
上述查询将返回

truck   tno
------------
dodge    66
viper    33
您使用的GROUP BY没有数学运算符,因此查询失败。为了让您的数据得到使用

 Select * from  transactions

或者,如果您确实想使用数学运算符获取一些数据,请更清楚地告诉我们您试图实现的目标,而不仅仅是发布表结构和失败的查询。

我尝试过,但不适用于我,这就是我在此处发布的原因。谷歌搜索“如何使用分组依据”。请描述您的目标,如果您要
选择*
@huMpty duMpty,请使用
groupby
没有意义。我实际上想用所有列获取具有不同tno值的数据。我是sql新手,所以我需要帮助。我不知道为什么人们不欢迎begineers。@user3631434分组意味着将行组合在一起以显示总计或最小/最大值。因此,不能将所有行都分组。您是否希望按顺序而不是分组,以便所有tno都在一起?我需要结果中的所有列。但您的查询在超过2列上显示错误。您仍然没有告诉我们您想要什么。如果您只需要所有数据,请使用底部的查询-选择*from transactions-但如果您需要实际的分组依据,请告诉我们您在哪个列上使用的数学运算符以及您需要的分组。或者,接受评论中的建议,实际阅读并理解您试图使用的语言。我的示例旨在帮助您演示基本sql查询是如何工作的。花点时间考虑一下,而不是急于复制代码。我希望所有列都具有不同的tnoSelect distinct(tno)、pno、date、acode、acname、truck、weight、quality、amount from transactions我使用此查询,但它会将上面写的所有列都区分开来。我不想说tno@MattThrowerA+表示努力,但请放弃并做一些有用的事情:-)