簡體   English   中英

消息156,級別15,狀態1,第22行在關鍵字“具有”附近的語法錯誤

[英]Msg 156, Level 15, State 1, Line 22 Incorrect syntax near the keyword 'having'

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行
關鍵字“具有”附近的語法不正確。

您不能在擁有別名時使用別名。 請改為使用以下內容,或為了簡單起見使用CTE

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
    sum(case when CCDMS_Container.ContainerSize=1 then 1 else 0 end) >=2
and sum(case when CCDMS_Container.ContainerSize=2 then 1 else 0 end) >= 1
and sum(case when CCDMS_Container.ContainerSize=3 then 1 else 0 end) >= 1
and sum(case when CCDMS_Container.ContainerSize=4 then 1 else 0 end) >= 0
and sum(case when CCDMS_Container.ContainerSize=5 then 1 else 0 end) >= 1

您不能在have語句中引用select語句中的別名。 嘗試使用子查詢來重建查詢以對其進行過濾。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM