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的地方,我仍然收到这个错误。Msg 156,Level 15,State 1,Line 22关键词'having'附近的语法不正确
我不知道该怎么做。
消息156,级别15,状态1,行22
关键字 '具有' 近不正确的语法。
将计算放入CTE /子查询中,然后用'where引用别名'size *'过滤。 –
我可以理解,'having'子句在语法上不正确,因为它不理解列别名。但是,这应该会生成“无效的列名称”错误,而不是“错误的语法”错误。我怀疑你在'having'关键字周围有一个无效字符。 –
我试图做类似于这个http://stackoverflow.com/questions/17194145/sql-count-based-on-column-value,但我想要做的事情之后,是只返回公司有相同或更多的指定的数字,我看到这个问题http://stackoverflow.com/questions/15618812/sum-columns-in-mysql-then-use-the-result-in-where-clause,所以我结合他们跳来跳去,它会和我一起工作。 – Nysa