Sql server 2008 我想使用case语句获取1月到12月之间的成本,现在我得到的是Null而不是cost,下面是我的代码
以下是我用于追踪此类问题的技术:Sql server 2008 我想使用case语句获取1月到12月之间的成本,现在我得到的是Null而不是cost,下面是我的代码,sql-server-2008,Sql Server 2008,以下是我用于追踪此类问题的技术: SELECT dbo.postst.cost as Cost2014, case when (dbo.InvNum.OrderDate) between '2014/01/01' and '2014/12/31' then dbo.Postst.Cost end as Cost2014 from dbo.postst INNER JOIN dbo.invnum on dbo.invnum.autoindex = dbo.postst.accountLin
SELECT dbo.postst.cost as Cost2014,
case when (dbo.InvNum.OrderDate) between '2014/01/01' and '2014/12/31' then dbo.Postst.Cost end as Cost2014
from dbo.postst INNER JOIN dbo.invnum on dbo.invnum.autoindex = dbo.postst.accountLink
因此,我添加了我正在进行某种处理的列,以查看返回的值。然后我将内部联接更改为左联接(临时)。然后,当我运行select时,我通常可以看到为什么它们可能没有满足我的期望,以及为什么我的查询没有重新调整正确的结果
在这种情况下,您可能没有正确范围内的任何数据,或者连接可能不正确,因此根本不会拾取任何记录
您拥有的是一个相对简单的查询,如果它更复杂,我通常使用select*而不是sepcific列来查看其他列中是否有影响结果的内容。当您有一个一对多关系,并且只想获取一条记录,但在所选字段中获取重复记录时,通常会出现这种情况 在这个问题上,原始数据会很有帮助,我认为最好对表使用别名,这样会有更好的可读性
SELECT dbo.postst.cost as Cost2014,
dbo.InvNum.OrderDate,
case when (dbo.InvNum.OrderDate) between '2014/01/01' and '2014/12/31' then dbo.Postst.Cost end as Cost2014
from dbo.postst
left JOIN dbo.invnum on dbo.invnum.autoindex = dbo.postst.accountLink