2013-07-01 153 views
2

我创建了一个有效的SQL查询,但它很丑。我现在用的语句:清理SQL代码

CASE WHEN p.Guests is null THEN 0 ELSE p.Guests 

在一些计算约10倍,而在查询完成,我想知道是否有可能做这样的事情:

variable = CASE WHEN p.Guests is null THEN 0 ELSE p.Guests 

,然后代替123 * (CASE WHEN p.Guests is null THEN 0 ELSE p.Guests) 我可以做123 * variable。 p.Guests是参加活动的客人数量,它根据查询中的每一行而有所不同。 所以我的问题是:有没有办法在SQL中制作这样的变量?

+0

为什么不使用子查询? 'SELECT 123 * variable,456 * variable FROM(SELECT variable = COALESCE(p.Guests,0)FROM ...)AS x;' –

+0

...即使您*可以*简化表达式,为什么重复表达式multiple次,不管复杂性如何? –

+0

我在查询中的多个点使用表达式。我对SQL很陌生,所以它可能是一个很长的路要做,但它也是我想要的。 – Austin

回答

3

您可以使用ISNULL

select 123 * ISNULL(p.Guests,0) FROM ... 

ISNULL函数将返回第一个参数,除非它是null在这种情况下,它将返回第二个参数。