【发布时间】:2016-03-08 21:21:18
【问题描述】:
SELECT
CCDMS_Company.CompanyID, CCDMS_Company.CompanyName,
CCDMS_Container.ContainerID, CCDMS_Container.Price,
SUM(CASE WHEN CCDMS_Container.ContainerSize = 1
THEN 1 ELSE 0 END) AS size1,
SUM(CASE WHEN CCDMS_Container.ContainerSize = 2
THEN 1 ELSE 0 END) AS size2,
SUM(CASE WHEN CCDMS_Container.ContainerSize = 3
THEN 1 ELSE 0 END) AS size3,
SUM(CASE WHEN CCDMS_Container.ContainerSize = 4
THEN 1 ELSE 0 END) AS size4,
SUM(CASE WHEN CCDMS_Container.ContainerSize = 5
THEN 1 ELSE 0 END) AS size5
FROM
CCDMS_Company
INNER JOIN
CCDMS_Container ON CCDMS_Container.Co_ID = CCDMS_Company.CompanyID
AND CCDMS_Company.CityID = 1
GROUP BY
CCDMS_Company.CompanyID, CCDMS_Company.CompanyName,
CCDMS_Container.ContainerID, CCDMS_Container.Price
HAVING
size1 >=2
AND size2 >= 1
AND size3 >= 1
AND size4 >= 0
AND size5 >= 1 ;
这是我的查询,即使我使用 where ,我也会不断收到此错误。
我不知道该怎么办。
消息 156,第 15 级,状态 1,第 22 行
关键字“have”附近的语法不正确。
【问题讨论】:
-
将计算放入 CTE / 子查询中,然后使用
where过滤引用别名size*。 -
我可以理解
having子句在语法上是不正确的,因为它不理解列别名。但是,这应该会生成“无效的列名”错误,而不是“不正确的语法”错误。我怀疑您在having关键字周围的某处有一个无效字符。 -
我正在尝试做类似于 stackoverflow.com/questions/17194145/… 的事情,但之后我想做的是只返回具有相同或更多指定数字的公司我也看到了这个问题stackoverflow.com/questions/15618812/… 所以我把它们结合起来,希望它能和我一起工作。
-
我怎么能用我试过的子查询但结果不正确。
标签: sql sql-server