【发布时间】:2014-09-15 11:01:44
【问题描述】:
我有一个存储过程,
我想对列 IsUserFruitEater 和 IsUserOnSite 使用 HAVING 子句,但它说列不存在。
不确定如何使用列,必须有一种方法可以使用存储过程结果的列...
ALTER procedure [dbo].[Risks_GetFruitCratesForUser]
(
@UserID VARCHAR(200),
@URLFilter varchar(256)
)
AS
SELECT DISTINCT
Fruits.*
,FruitsCrate.* dbo.IsUserRegularFruitEater(@UserID, FruitsCrate.FutureID) AS
IsUserFruitEater
,dbo.IsUserOnSite(@UserID, FruitsCrate.FID) AS IsUserOnSite
,COALESCE(doThis.deeraw, - 1) AS deeraw
,COALESCE(doThat.HeroSheema, - 1) AS HeroSheema
,Jootey.deeraw * Jootey.HeroSheema AS BigBang
FROM someTable....
WHERE blahblah NOT NULL
AND blahblah2 LIKE "abc"
HAVING Min(IsUserFruitEater) > 0
OR Min(IsUserOnSite) > 0
【问题讨论】:
-
您没有
GROUP BY所需的HAVING。所以你可以把这些条件放在 WHERE 子句中:WHERE dbo.IsUserOnSite(@UserID, FruitsCrate.FID) > 0 AND ... -
你少了一个逗号
FruitsCrate.* dbo.IsUserRegularFruitEater -
@TI 感谢您的编辑
-
@Bulat
Having通常与group by一起使用,但不是必需的。
标签: sql sql-server stored-procedures sql-server-2012