select (ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT))))) as parameter ,LAYOUT,FORM_NAMESPACE_NAME from [FORM_LAYOUT]
group by WIDTH,HEIGHT,LAYOUT,FORM_NAMESPACE_NAME
order by ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT)))) desc
这样工作。
但是我想输入一个参数。我将在我的程序(c#)中发送此参数。
假设我将参数设置为500,因此它必须像
(ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT))))) as parameter<500
为了实现这一目标
select (ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT))))) as parameter ,LAYOUT,FORM_NAMESPACE_NAME from [FORM_LAYOUT]
where parameter <500
group by WIDTH,HEIGHT,LAYOUT,FORM_NAMESPACE_NAME
order by ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT)))) desc
不起作用。它说“无效的列名参数”
我该如何纠正。
谢谢。
答案 0 :(得分:0)
查询应该是
select (ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT))))) as parameter ,LAYOUT,FORM_NAMESPACE_NAME from [FORM_LAYOUT]
group by WIDTH,HEIGHT,LAYOUT,FORM_NAMESPACE_NAME
having ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT)))) < 500
order by ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT)))) desc
答案 1 :(得分:0)
您可以通过两种方式完成此操作。
1)将您的where语句更改为以下内容
WHERE (ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT))))) < 500
GROUP BY LAYOUT, FORM_NAMESPACE_NAM
2)使用子查询
SELECT [parameter]
FROM (SELECT (ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT))))) as [parameter])
WHERE parameter < 500