是否有可能在表中有一列(而不是從視圖)(SQL SERVER 2008)根據另一列中的值進行更改,即如果我有一列名爲「DUEDATE」的列,我可以有一個名爲「STATUS」的列,如果「DUEDATE」> GetDate(),它會將狀態更改爲「Now Due」。如果是的話,你如何將它添加到表格中?在表中使用CASE語句
0
A
回答
0
是的,你可以創建一個計算列:
CREATE TABLE [dbo].[SampleTable](
[DueDate] [date] NULL,
[ComputedValue] AS (CASE WHEN [Duedate] > GETDATE() THEN 'Now Due' ELSE '' END)
) ON [PRIMARY]
由於這是一個非確定性的列(因爲GETDATE()
的值是不同的每次使用表),將其添加到在選擇查詢中返回相同的表並不會給您帶來太多好處。
0
您可以更改表,並添加計算列:
ALTER TABLE dbo.TheTable
ADD Status AS CASE WHEN ...
你不能堅持它,因爲它的不確定性,所以不用加PERSISTED或試圖把一個指標就可以了。
從索引的角度來看,不要嘗試使用WHERE Status ='whatever'來查詢它,因爲它必須考慮表中的每一行。相反,使用DueDate上的索引和WHERE DueDate < = GETDATE()
相關問題
- 1. 在另一個Case語句中使用Case語句的結果
- 2. 在WHERE子句中使用CASE語句
- 3. 在IN子句中使用CASE語句
- 4. 使用case語句
- 5. 使用case語句
- 6. 使用CASE語句
- 7. MySQL - 存儲過程 - 在Case語句中使用Case表達式?
- 8. 在case語句中,在select語句中使用變量
- 9. 在where子句中使用if語句或case語句sql 2012
- 10. 用case語句
- 11. 在CASE語句
- 12. 在case語句
- 13. 如何在豬中使用CASE語句?
- 14. 在函數中使用Case語句
- 15. 在「where in」語句中使用「case」 -
- 16. 在MySQL的Case語句中使用Sum
- 17. 在Select語句中使用CASE
- 18. 在switch case語句中使用方法
- 19. 在case語句中使用sql count
- 20. 如何在PostgreSQL中使用Case語句?
- 21. 在select語句中使用case條件
- 22. SQL在case語句中使用count
- 23. Java在case語句中使用變量
- 24. 在MySQL SELECT語句中使用CASE
- 25. 在switch case語句中使用DatePart
- 26. 在Oracle CASE語句中使用REPLACE
- 27. 在幫手中使用case語句
- 28. 如何使用case語句在SQLServer中
- 29. 在CASE語句中使用LIKE
- 30. Elixir:在case語句中使用變量
在最佳實踐中,我們不保留可從另一個派生的列。 – Miller
我明白了,但我已經創建了一個視圖,但當我添加與該視圖左連接的表時,它使得我的整個查詢非常慢。 –
爲什麼您需要將表格添加到視圖?只需創建一個包含基表中所有列的視圖,並添加CASE語句,如下面的答案中所述。 – Dan