【发布时间】:2016-04-23 20:34:50
【问题描述】:
SQL 表有一个 NVARCHAR(MAX) 类型的列,其中包含客户状态的历史记录。
StatusHistory 列中的值示例:
20120401P,20140715A,20160118T
意思:
- 2012 年 4 月 1 日,客户处于待处理状态
- 2015 年 7 月 15 日,客户开始活跃
- 2016 年 1 月 18 日,客户被终止
状态将始终按时间升序排列!
在同一张表中,我有一个名为CustStatus 的列,我想通过读取上面基于GETDATE() 的StatusHistory 列来存储当前客户状态。
目前我正在使用CustStatus 中的一个公式执行此操作,该公式使用用户定义的函数。
我可能错了,但我认为如果我可以在不使用用户定义函数的情况下做到这一点,我可以提高包括这些信息在内的查询的性能。
那么,是否有一个公式可以让我根据GETDATE() 读取StatusHistory 来填充CustStatus?
【问题讨论】:
-
这是一个非常糟糕的设计! 不要再浪费时间尝试处理这个问题了 - 你需要修复你的设计!。您应该有一个具有当前状态的
Customer表,以及一个引用Customer表并包含日期和状态列的单独CustomerHistory表。有了这样一个适当的关系设置,查询将变得轻而易举!! -
如果我的问题是“设计好不好?”,为什么我总是得到答案。。不是我问的!所以我想没有人知道该怎么做。
-
@FrankM.,因为回答你的实际问题会鼓励你继续使用它:)
标签: sql sql-server calculated-columns