2010-11-17 53 views
6

Tôi có thể có tuyên bố trường hợp trong mệnh đề HAVING trong SQL Server 2005 không?tuyên bố trường hợp có mệnh đề trong sql

Dưới đây là tuyên bố HAVING của tôi. Nó cho tôi một lỗi cú pháp.

@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 

Cảm ơn,

Amit

+1

vì bạn đã viết một nửa câu hỏi. Tôi đã trả lời câu hỏi bạn đã hỏi ban đầu. –

+0

@ Mitch - được rồi. Cảm ơn vì đã trả lời. Tôi cũng đã cập nhật câu hỏi. Xin vui lòng tư vấn cho – Amit

Trả lời

17

Ví dụ (từ here):

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; 
+0

Cảm ơn vì điều đó. Tôi đã thêm các đoạn mã mà là cho tôi lỗi cú pháp và tôi không thể tìm ra những gì là sai với nó. Xin tư vấn – Amit

-1

ví dụ khác từ here..

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) 
Các vấn đề liên quan