Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 我想使用case语句获取1月到12月之间的成本,现在我得到的是Null而不是cost,下面是我的代码_Sql Server 2008 - Fatal编程技术网

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