不确定这样做的最佳方法,应用程序是较旧的,这就是为什么我在生成这个时遇到这么多麻烦。我读过关于做一个CASE语句,但我没有太多的SQL经验。任何帮助表示赞赏,答案将得到尊重。谢谢。此外,没有设计,编写应用程序的人使用占位符和所有数据来自这个巨大的文件,这超出了我。我不知道为什么,因为我从未见过这样的事情。这是一个怪物。
'-
Dim TemplateColumnCDLExpiration As System.Web.UI.WebControls.TemplateColumn
TemplateColumnCDLExpiration = New System.Web.UI.WebControls.TemplateColumn
If Me.AllowSorting Then
TemplateColumnCDLExpiration.SortExpression = "CDLExpiration"
End If
TemplateColumnCDLExpiration.ItemTemplate =
New JAG.WebUI.Controls.IEditGridTemplate(ListItemType.Item,
"CDLExpiration",
JAG.WebUI.Controls.tEditGridItemControlType.Label)
TemplateColumnCDLExpiration.HeaderText = "CDL Expiration"
MyBase.Columns.Add(TemplateColumnCDLExpiration)
'-
答案 0 :(得分:0)
好的,我会给你CASE
问题的答案,但你必须保证你会阅读下面的注意事项。 :)
我正在使用Oracle SQL;我不知道其他SQL实现的语法是否不同。以下是显示语法的虚拟查询示例:
SELECT
CASE
WHEN (sysdate - TO_DATE('04/09/2013', 'mm/dd/yyyy') > 30) THEN 'red'
ELSE 'black'
END text_color
FROM dual;
WHEN
之后的括号中的代码是测试。它将当前日期与4月9日进行比较,并询问“4月9日是否超过30天?”如果是,则返回'red'
作为text_color
的值。如果该条件为false,则返回'black'
。这是一个更通用的形式:
SELECT
CASE
WHEN (sysdate - :date_to_check > :expiration_days) THEN 'red'
ELSE 'black'
END text_color
FROM :my_table;
在SQL中不需要这个令人讨厌的逻辑。自给定日期以来检查X天数不是数据库逻辑。获取日期是数据库逻辑,决定从该日期开始已经过了多少天,直到今天可以被认为是数据库逻辑或业务逻辑,但决定文本颜色肯定是显示逻辑,这意味着您应该修改.NET代码,而不是你的SQL。如果您需要更改显示颜色会怎样?日期检查保持不变,但您必须修改...您的SQL?只有在修改正在检索或存储的数据时,才需要进行SQL修改。最重要的是,这不是一个清晰的关注点分离。