简体   繁体   English

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

[英]invalid column name , parameter from c#

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

this works like that. 这样工作。

but i want to put a parameter. 但我想放一个参数。 i will send this parameter in my program (c#) . 我将在我的程序中发送此参数(c#)。

let's say i put my parameter 500, so it must work like 让我说我把我的参数500,所以它必须像

(ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT))))) as parameter<500

in order to achieve that 为了做到这一点

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

doesn't work. 不起作用。 It says "invalid column name parameter" 它说“无效的列名参数”

how can i correct it. 我该如何纠正。

Thanks. 谢谢。

Query should be 查询应该是

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

You can accomplish this in two ways. 您可以通过两种方式完成此任务。

1) change your where statement to the following 1)将where语句更改为以下内容

WHERE (ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT))))) < 500
GROUP BY LAYOUT, FORM_NAMESPACE_NAM

2) Use a sub query 2)使用子查询

SELECT [parameter]
FROM (SELECT (ABS(MAX((convert(int,WIDTH))- (convert(int,HEIGHT))))) as [parameter])
WHERE parameter < 500

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM