下面的第一个案例组(Err1)不会超出第一个案例组。除非我删除其他两个案例组,Err2和Err3,否则它会按预期工作。我最初将这些连接起来创建了一个列,但它的工作原理如上所述。我认为将它分成不同的列可以解决我的问题,但没有快乐。
SELECT
*,
CASE
WHEN ISNULL(Approval_Date, 0) = 0
THEN 'Approval Date is Missing' + Char(13) + Char(13)
ELSE
CASE WHEN First_Spend > (ISNULL(Approval_Date, 0) + 15)
THEN 'Approval Date is too far in the past' + char(13) + Char(13)
WHEN (First_Spend + 25) < ISNULL(Approval_Date, 0)
THEN 'Approval Date is too far in the future' + char(13) + Char(13)
END
END AS 'ERR1',
CASE
WHEN Funding_Status = ''
THEN 'Funding Status is Missing' + Char(13) + Char(13)
END AS 'ERR2',
CASE
WHEN Funding_Type = ''
THEN 'Funding Type is Missing' + Char(13) + Char(13)
END AS 'ERR3'
我尝试了几种不同的版本,但效果仍然不正确。任何聪明的想法都会受到赞赏。
由于
答案 0 :(得分:1)
您的日期似乎没有被定义为日期,如果您知道这一点,请原谅我,但空字符串与null不同。
下面的示例显示了我认为您想要做的事情,但使用了适当的数据类型。我强烈建议使用适当的数据类型。
并且,为了消除任何误解,只要案例陈述中的一个条件为真,就不会出现以下情况&#34;当&#34;条款被评估。 err1,err2和err3是独立的case语句,所以它们应该总是被评估,但是嵌套的case语句依赖于err1。
此外,char(13)是回车。这将导致您的输出行被覆盖。也许您希望char(10)是换行符(或者如果您在Windows上运行则两者都是。)
$(document).ready(function () {
$('.valid').on('change', function () {
if ($(this.options[this.selectedIndex]).attr('quantity') == 0) {
$(this.options[this.selectedIndex]).find('span').remove();
$(this.options[this.selectedIndex]).append('<span>Message</span>')
}
});
});
答案 1 :(得分:0)
试试这个:
SELECT *,
CASE
WHEN ISNULL(Approval_Date, 0) = 0 THEN 'Approval Date is Missing' + Char(13) + Char(13)
WHEN First_Spend > (ISNULL(Approval_Date, 0) + 15) THEN 'Approval Date is too far in the past' + char(13) + Char(13)
WHEN (First_Spend + 25) < ISNULL(Approval_Date, 0) THEN 'Approval Date is too far in the future' + char(13) + Char(13)
END AS 'ERR1',
CASE
WHEN Funding_Status = '' THEN 'Funding Status is Missing' + Char(13) + Char(13)
END AS 'ERR2',
CASE
WHEN Funding_Type = '' THEN 'Funding Type is Missing' + Char(13) + Char(13)
END AS 'ERR3'
答案 2 :(得分:0)
谢谢你们,你们都在正确的轨道上。最大的问题是一些案件返回null。原始版本实际上有效,但它返回了一个错误,因为“批准日期缺失”#39;和批准日期过去太远&#39;,这可能是同样的错误。
我做了一些更改,我添加了Elses,我使用我的isnull值进行审批日期以消除重复错误,并修复了丢失First_Spend日期的可能性。它现在看起来像这样:
SELECT *,
Case When Approval_Date is null then 'Approval Date is Missing' + Char(13) + Char(13) Else ''End +
Case When Funding_Status = '' then 'Funding Status is Missing' + Char(13) + Char(13) Else '' End +
Case When Funding_Type = '' then 'Funding Type is Missing' + Char(13) + Char(13) Else '' End +
Case
When ISNULL(First_Spend,0) >(isnull(Approval_Date,CAST('12/12/2099' AS DATETIME)) + 15) then 'Approval Date is too far in the past' + char(13) + Char(13)
When (ISNULL(First_Spend,CAST('12/12/2099' AS DATETIME)) +25) < isnull(Approval_Date,0) then 'Approval Date is too far in the future' + char(13) + Char(13)
Else '' End as 'ERR'