作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
T_TABLE2的结构是
ID INT
TBL1_ID INT
TESTER VARCHAR
LOT_ID VARCHAR
GRP VARCHAR
SITE_NUM INT
TEST_NUM VARCHAR
TEST_DESC VARCHAR
MEASUREMENT DOUBLE PRECISION
UNIT VARCHAR
LL DOUBLE PRECISION
UL DOUBLE PRECISION
STATUS VARCHAR
SELECT TEST_DESC, MEASUREMENT, LL, UL
FROM T_TABLE2
GROUP BY TEST_DESC
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).
最佳答案
您必须来自MySQL。 MySQL-IMHO误导,错误且以一种黑变的,不可预测的方式-允许您指定部分GROUP BY
查询,并且数据库引擎会尝试从查询的其余部分中找出未分组的值-按您想要的列。另一方面,标准SQL(Firebird和大多数其他RDBMS)不支持;它要求将任何非聚合列包含在分组依据中,并且需要任何非分组依据列来明确指定所需的行。
在您的情况下,有问题的列是MEASUREMENT
,LL
和UL
。您需要指定所需的MEASUREMENT
,LL
和UL
(是的,即使它们都相同;数据库引擎也无法知道或保证这一点),或者是否要分组一列或多列,或者您可能忘记了汇总(是否要SUM
?)
有效查询的示例:
按所有列分组(相当于SELECT DISTINCT
):
SELECT TEST_DESC, MEASUREMENT, LL, UL
FROM T_TABLE2
GROUP BY TEST_DESC, MEASUREMENT, LL, UL
MEASUREMENT
分组,并返回
MIN
LL和
MAX
UL:
SELECT TEST_DESC, MEASUREMENT, MIN(LL), MAX(UL)
FROM T_TABLE2
GROUP BY TEST_DESC, MEASUREMENT
SUM
未分组的列:
SELECT TEST_DESC, SUM(MEASUREMENT), SUM(LL), SUM(UL)
FROM T_TABLE2
GROUP BY TEST_DESC
SELECT TEST_DESC, COUNT(DISTINCT MEASUREMENT), SUM(LL), MAX(UL)
FROM T_TABLE2
GROUP BY TEST_DESC
关于sql - 如何在firebird中使用GROUP BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171901/
我是一名优秀的程序员,十分优秀!