2013-12-14 85 views
1

我試圖做一個選擇這樣的 -錯誤選擇

SELECT COUNT(*) 
FROM 
(
DECLARE @Emp varchar(100) 
SET @Emp = 'Rick' 
SELECT * 
FROM [Temporary].[dbo].[Employee_Test] 
WHERE [Emp_Name] = @Emp 
) AS EMPS 

我知道,我可以把Declare語句之前外選擇解決這個問題。但是,由於一些糟糕的設計,我寧願能夠按原樣使用內部查詢,然後計算其中的行數。我怎麼做 ?

我得到的錯誤是 -

消息156,15級,狀態1,4號線
關鍵字 '聲明' 附近有語法錯誤。
消息102,級別15,狀態1,行9
附近有語法錯誤)'

+0

爲什麼不直接使用:'SELECT COUNT(*)FROM [Temporary]。[dbo]。[Employee_Test] WHERE [Emp_Name] ='Rick''? –

+1

@JorgeCampos - 這是正確的,但由於別人愚蠢的代碼,我不得不採取複雜的方式。 –

回答

0
DECLARE @Emp varchar(100) 
SET @Emp = 'Rick'; 

SELECT COUNT(*) 
FROM [Temporary].[dbo].[Employee_Test] 
WHERE [Emp_Name] = @Emp 

您需要聲明該變量並在將其傳遞給SELECT語句之前設置其值。您不能在Select語句內聲明變量。

+1

是的,我已經知道了。我會發現那個強迫我最終陷入這個愚蠢的局面的人。 –

-1

你應該把SET語句後分號?

SET @EMP ='Rick';

+0

在這裏不起作用。 –