-2

我正在使用 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

现在我得到的输出在任何行或列中都没有,我认为我应该得到第三行,因为它包含Accrued Into Default

谁能告诉我为什么会这样。

4

2 回答 2

2

您的查询是筛选所有字段所在的行NULL

将您的 s 更改ANDORs,您将获得所需的结果。

于 2013-11-13T12:08:59.063 回答
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 
于 2013-11-13T12:09:34.227 回答