2015-11-11 87 views
-2

這是我試圖去工作的查詢,但我得到一個語法錯誤。SQL Select value as(Subquery)

SELECT Column1 as (SELECT Value2 from Table2 Where ConditionA, ConditionB, ConditionC) 
from Table1 

我是自學的,並沒有發現任何明確地說,這不能做,但如果是這樣的話,那麼感謝關閉。

+1

問題是:你想要做什麼?請添加您的表格結構,示例數據和預期輸出。 –

+2

只是爲了澄清 - 你是否試圖使用子查詢(來自'Table2.Value2')爲'Table1'中的'Column1'創建一個別名? – Jamiec

+1

如果您想要變量列名稱,您需要動態sql – lad2025

回答

-2

嘗試

SELECT (SELECT Value2 from Table2 Where ConditionA, ConditionB, ConditionC) Column1 from Table1 
+1

這沒有多大意義,你實際上沒有選擇'Table1'中的任何東西 – Jamiec

+0

這將顛倒內容及其別名... – CactusCake

+0

問題不在於它是否有意義......這是用戶問題的答案。他必須決定是否有意義。問題 - >回答 – cboden

0

不能使用從一個別名的子查詢返回的值,也沒有辦法,使這項工作。

您唯一的選擇是動態構建sql,並使用sp_executesql,但那通常表明其他問題已經出錯!

開始通過獲取你想要的值,幾個百分點的

  • 確保你只得到1分的結果,或者使用TOP 1或適當的過濾條件
  • 多個條件與ANDOR,不分開逗號

    declare @alias NVARCHAR(100) -- whatever is appropriate 
    SELECT TOP 1 @alias = value2 FROM Table2 
    WHERE someField = 'some value' 
    

Ť母雞動態建立sql,並執行它。

DECLARE @sql NVARCHAR(100) = 'SELECT Column1 AS ' + @alias + ' FROM Table1' 
EXEC sp_executesql @sql 

您可以在這裏看到這些內容起作用:http://sqlfiddle.com/#!3/71f8d6/3

但是,我要強調,這是一個不好的解決

+0

不是愚蠢的,但爲什麼這是壞的?只是想進一步教育自己。 – TechProjCoord

+0

這不是一個愚蠢的問題,但它是一個很長的回答,特別是在評論中。閱讀:http://stackoverflow.com/questions/317725/is-a-dynamic-sql-stored-procedure-a-bad-thing-for-lots-of-records開始 – Jamiec

+0

如果你是一個規範回答,試試這個:http://www.sommarskog.se/dynamic_sql。HTML(警告:長) – Jamiec