我在sqlserver 2008工作
Security Id Accrued Into Default Accrued Out of Default Amort Into Default Amort Out of Default Security Code Geneva Investment Code Has Position
WERE000015 NULL NULL NULL NULL mysec1 02635PTP8 0
WERE000016 NULL NULL NULL NULL mysec2 00104BAF7 0
WERE000017 11/11/2011 NULL NULL NULL mysec3 AU0000ABOHG2 0
我有一张这样的桌子。现在我将这些值放在Temp表中。现在我必须只选择那些在2,3,4,5列
中不存在NULL的值所以我将MSsql应用为
select * from #temp1 where [Accrued Into Default] IS NOT NULL AND
[Accrued Out of Default] IS NOT NULL AND
[Amort Into Default] IS NOT NULL AND
[Amort Out of Default] IS NOT NULL
现在我得到的输出是 Nothing 在任何行或列中 我想我应该得到第3行,因为它包含 Accrued Into Default
有谁能告诉我为什么会这样。
答案 0 :(得分:2)
您的查询是针对所有字段为NULL
的行进行过滤。
将AND
更改为OR
,您将获得所需的结果。
答案 1 :(得分:0)
如果你想要第三行,那么你的查询应该是这样的:
select * from #temp1 where [Accrued Into Default] IS NOT NULL OR
[Accrued Out of Default] IS NOT NULL OR
[Amort Into Default] IS NOT NULL OR
[Amort Out of Default] IS NOT NULL