[英]How to reuse column alias in another column within same select statement?
select pd.id
,[value 1] = Case
----
End
,[value 2] = Case when [value 1] in ('test1', 'test2') Then 0
else [value 1] End
當我嘗試在值 2 中使用值 1 時,我得到的列無效。是否有可能使用計算的 [值 1] 在 [值 2] 中使用
我目前的解決方案是為值 1 創建一個單獨的 sp 或視圖,但這不是我想要做的。
您可以使用 select 語句 select [值 1] 然后將外部查詢寫入 select [值 1] 和 [值 2]
SELECT [value 1] ,[value 2] = Case when [value 1] in ('test1', 'test2') Then 0
else [value 1] End
FROM
(
select pd.id
,[value 1] = Case
----
End
FROM TABLENAME
)T
或者您可以在 [value 2] 的 case 語句中重復 [value 1] 的 case 語句
select pd.id
,[value 1] = Case
----
End
,[value 2] = Case when ( Case
----
End [value 1]) in ('test1', 'test2') Then 0
else ( Case
----
End [value 1]) End
在 SQL 服務器中,您可以使用APPLY
在FROM
子句中定義列別名——我認為這是一個好地方:
select pd.id v.value_1,
(Case when value_1 in ('test1', 'test2') Then '0'
else value_1
End) as value_2
from pd cross apply
(values ( case . . . )
) v(value_1);
筆記:
value_1
而不是value 1
。value_1
似乎是字符串。 value_2
的case
表達式應該返回一個字符串,所以'0'
而不是0
。as
定義表別名。 這是 SQL 標准,但使用=
本身並沒有錯,這是 SQL 服務器特定語法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.