无效的列名,来自C#的参数

时间:2019-03-19 10:46:27

标签: c# sql sql-server tsql

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

不起作用。它说“无效的列名参数”

我该如何纠正。

谢谢。

2 个答案:

答案 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