2012-12-26 95 views
0

我有這個疑問:SQL WHERE條件「爲」

SELECT Param1, Param2 AS P1 
FROM SomeTable 

我想要做這樣的事情:

WHERE P1 > 2 

有辦法做到這一點? 當然有一個查詢,而不是Param2。

+1

爲什麼不使用Param2代替P1? –

+0

可能的重複http://stackoverflow.com/questions/3096301/sql-server-as-statement-aliased-column-within-where-statement – NullRef

+0

性能注意:「HAVING」子句中的謂詞僅在行已經返回,幾乎是執行計劃的最後一步。 'WHERE'子句中的等價謂詞可能能夠利用索引來避免搜索條件的每一行。 – spencer7593

回答

0

可以使用having

試試這個

select param1,param2 as p1 
from table 
having p1 > 2 
+1

我不這麼認爲。這甚至不是有效的語法 – Bohemian

0

,而不是在那裏having子句中使用..

SELECT Param1, Param2 AS P1 
    FROM SomeTable 
    having P1>2; 
+1

誰投了這個,爲什麼?無效的語法 – Bohemian

2
WITH ABC 
AS 
(
SELECT Param1, Param2 AS P1 
FROM SomeTable 
) 
SELECT * from ABC where P1>2 
0

您可以使用子查詢:

SELECT Param1, P1 
FROM 
(
    SELECT Param1, Param2 AS P1 
    FROM SomeTable 
) src 
WHERE P1 > 2 
0

試試這個,

SELECT Param1, 
[P1] = Param2 
FROM SomeTable 
WHERE [P1] > 2 

如果您使用MS SQL這應該工作

0

HAVING將無法工作。如上所述的公共表是一個很好的方法。