Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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 SQL Case语句-如果第一个“when”返回null,则在_Sql Server_Null_Case Statement - Fatal编程技术网

Sql server SQL Case语句-如果第一个“when”返回null,则在

Sql server SQL Case语句-如果第一个“when”返回null,则在,sql-server,null,case-statement,Sql Server,Null,Case Statement,只是想知道是否有人可以帮助我,我正在运行一个引用不同表的case语句。它需要查找汽车的品牌、型号和年份以及位置FL、FR、BL、BR并返回套件号 同一辆车的表中最多可以有4个条目,fitting position列指定了要选择的套件编号,为了只返回1个结果,我认为如果我将其添加到返回1个以上值的任何其他位置,我需要将其放在查询的where部分 但是,车辆并不总是有4个条目。FL和BL可以有套件,但FR和BR不能。由于我将position列添加到返回'null'的where部分,我希望它返回cas

只是想知道是否有人可以帮助我,我正在运行一个引用不同表的case语句。它需要查找汽车的品牌、型号和年份以及位置FL、FR、BL、BR并返回套件号

同一辆车的表中最多可以有4个条目,fitting position列指定了要选择的套件编号,为了只返回1个结果,我认为如果我将其添加到返回1个以上值的任何其他位置,我需要将其放在查询的where部分

但是,车辆并不总是有4个条目。FL和BL可以有套件,但FR和BR不能。由于我将position列添加到返回'null'的where部分,我希望它返回case语句的下一部分,而不是什么也不返回

这是sql工作的地方,因为FL有一个工具包

SELECT CAST (CASE WHEN '002' != 'UNI'  THEN T0.U_MPLFK ELSE 'NOKIT' END AS VARCHAR)
FROM 
[@CSOL_MILFORD]  T0 INNER JOIN [dbo].[@CSOL_VEHICLES]  T1 ON  T0.[U_VehicleRef]  = T1.[U_VehicleRef] 
WHERE
T1.U_Manufacturer = 'Ford' 
AND 
T1.U_Model = 'Galaxy' 
AND
T0.U_MPLFK > 1
AND
T0.U_FittingPosition = 'FL'
但是当它变为

SELECT CAST (CASE WHEN '002' != 'UNI'  THEN T0.U_MPLFK ELSE 'NOKIT' END AS VARCHAR)
FROM 
[@CSOL_MILFORD]  T0 INNER JOIN [dbo].[@CSOL_VEHICLES]  T1 ON  T0.[U_VehicleRef]  = T1.[U_VehicleRef] 
WHERE
T1.U_Manufacturer = 'Ford' 
AND 
T1.U_Model = 'Galaxy' 
AND
T0.U_MPLFK > 1
AND
T0.U_FittingPosition = 'FR'
我没有得到返回的值,我希望它返回'NOKIT'

非常感谢,

Roisin

如果左连接的on条件失败,则左连接返回包含空列的行。因此,可以将条件移动到左联接的上一部分。比如:

...
FROM    @CSOL_VEHICLES T1
LEFT JOIN
        @CSOL_MILFORD T0
ON      T0.U_VehicleRef  = T1.U_VehicleRef
        AND T0.U_MPLFK > 1
        AND T0.U_FittingPosition = 'FR'
WHERE   T1.U_Manufacturer = 'Ford' 
        AND T1.U_Model = 'Galaxy' 

将条件放在on子句而不是where子句中意味着您将得到一个包含null的行,而不是没有行。

问题并不完全清楚。始终为'002'!='UNI‘条件满足,所以T0.U_MPLFK将从案例中返回抱歉,我不明白你在说什么。’002'实际上是一个屏幕参考,可以更改为不同的内容。它可以是UNI或空白,当它想查看表中的工具包编号时,它是一个编号。您好,-非常感谢,这正是我想要的:但是它仍然返回2行,因为“no kit”实际上将被替换为通用工具包编号。返回两个工具包编号。但我实际上只想返回第一个套件编号。非常感谢:您所说的第一个套件编号是什么意思?你能举个例子吗?对于福特galaxy,存在两个条目,FR和BL。当返回FR的装配位置时,它应该返回002。当《基本法》第007条。当我把BL放在一排,而NOKIT放在第二排时,它将返回007。我只想让它归还007。如果我将kit位置设置为'BR'2,结果将返回为'NOKIT';我只想要一个。我刚刚做了这个改变:但我不确定它是否会完全起作用:当'001'时选择前1名演员案例!='UNI'和T0.U_FittingPosition='BL'然后'9525'+T0.U_MPLFK ELSE'NOKIT'作为VARCHAR结束,作为来自[@CSOL_VEHICLES]T1的项目代码从T0左连接[@CSOL_MILFORD]T0。[U_VehicleRef]=T1。[U_VehicleRef]T0.U_MPLFK>1和T0.U_FittingPosition='BL'其中T1.U_制造商='Ford'和T1.U_车型='Galaxy'按项目代码订购这似乎已经完成了完美的操作非常感谢!