【发布时间】:2011-05-24 20:04:12
【问题描述】:
我目前有一个 select 语句,它检查几列以查看它们是否有数据。如果其中任何一个为空,那么我希望将其设置为假。如果它们都不为空,那么我希望将其设置为真。这是我目前拥有的:
select
cast(
case when ChangeOrderNumber is null then 0 else 1 end *
case when ClientName is null then 0 else 1 end *
case when QuoteNumber is null then 0 else 1 end *
case when ClientNumber is null then 0 else 1 end *
case when ServiceLine is null then 0 else 1 end *
case when ServiceLineCode is null then 0 else 1 end *
case when GroupLeader is null then 0 else 1 end *
case when CreatedBy is null then 0 else 1 end *
case when PTWCompletionDate is null then 0 else 1 end *
case when BudgetedHours is null then 0 else 1 end *
case when BudgetDollars is null then 0 else 1 end *
case when InternalDeadlineDate is null then 0 else 1 end *
case when ProjectDescription is null then 0 else 1 end *
case when Sales is null then 0 else 1 end *
case when Coop is null then 0 else 1 end *
case when PassThrough is null then 0 else 1 end *
case when POStatus is null then 0 else 1 end *
case when PONumber is null then 0 else 1 end as bit
)
as Flag
from t
现在,该代码有效,但有点冗长,我想知道是否有人知道更好的方法来做到这一点。请注意,有几种数据类型被检查。
更多细节: 此代码位于正在处理变更单的应用程序中查看的视图中。在处理变更单之前,它必须通过一些数据质量检查。此视图显示任何必需的数据是否为空。
【问题讨论】:
-
来吧,大卫......你不知道该怎么做吗:P
标签: sql-server tsql sql-server-2008