簡體   English   中英

在sql中的having子句中的case語句

[英]case statement in having clause in sql

我可以在SQL Server 2005的HAVING子句中使用case語句嗎?

以下是我的HAVING聲明。 它給了我一個語法錯誤。

@CLIENTPK_NEW IS NULL OR 
    (
        CLIENT.OH_PK = @CLIENTPK_NEW and 
        CASE WHEN @RelatedOrgs <> '11' then CLIENT.OH_PK= @CLIENTPK_NEW
        ELSE CLIENT.OH_PK in (
            SELECT dbo.OrgHeader.OH_PK FROM dbo.OrgHeader WITH (NOLOCK) INNER JOIN
            dbo.OrgRelatedParty WITH (NOLOCK) ON dbo.OrgHeader.OH_PK = dbo.OrgRelatedParty.PR_OH_Parent INNER JOIN
            dbo.OrgHeader AS OrgHeader_1 WITH (NOLOCK) ON dbo.OrgRelatedParty.PR_OH_RelatedParty = OrgHeader_1.OH_PK
            where OrgHeader_1.OH_PK = @CLIENTPK_NEW
        ) 
        END 
    )
}
AND (@CGNEEPK IS NULL OR CGNEE.OH_PK = @CGNEEPK) AND    
part.OP_RH_NKCommodityCode = @type 

謝謝,

阿米特

示例(從這里 ):

USE AdventureWorks2008R2;
GO
SELECT JobTitle, MAX(ph1.Rate)AS MaximumRate
FROM HumanResources.Employee AS e
JOIN HumanResources.EmployeePayHistory AS ph1 
    ON e.BusinessEntityID = ph1.BusinessEntityID
GROUP BY JobTitle
HAVING (MAX(CASE WHEN Gender = 'M' 
        THEN ph1.Rate 
        ELSE NULL END) > 40.00
     OR MAX(CASE WHEN Gender  = 'F' 
        THEN ph1.Rate  
        ELSE NULL END) > 42.00)
ORDER BY MaximumRate DESC;

是的,這是有效的語法。 但是, text,image和ntext數據類型不能在HAVING子句中使用

更新:您更新的示例沒有意義。 CLIENT.OH_PK=@CLIENTPK_NEW或者它沒有,除非你使用OR ,否則聲明的其余部分是無關緊要的。 也許你可以解釋一下busingess邏輯?

另一個例子來自這里..

SELECT EmployeeName ,Country,CompanyPlant,Gender, Total=MAX(PayScale)
FROM Employee
GROUP BY EmployeeName ,Country,CompanyPlant,Gender
HAVING (MAX(CASE WHEN Gender = 'Male'
 THEN PayScale
 ELSE NULL END) > 150.00
 OR MAX(CASE WHEN Gender = 'Female'
 THEN PayScale
 ELSE NULL END) > 180.00)

暫無
暫無

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

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