SQL查询:仅在列的值满足条件时选择这些值

3

我正在使用SQL Server 2005。

我有一个表,我在其中注册了一些项目,创建了一个“订单”,将其发送到仓库,以便他们知道需要发送什么。

以下是我的代码:

id_pedido=id_order, id_articulo=id_item, descripcion=description, fecha=date, nombre=employee name, local=store, (inicia+entra+sale) Existencias=stocks, tipo=Kind, --estado=state, activo=active.--

select id, id_pedido, p.id_articulo, p.descripcion, p.fecha, u.nombre, p.local,a.inicia+a.entra-a.sale as Existencias, a.tipo
from pedidos p join usuarios u on p.id_usuario=u.id_usuario join articulos a on a.id_articulo=p.id_articulo
where estado='activo'

我需要的是只有当物品种类为X时才显示库存列中的值。当他们的种类不是X时,如何显示所有库存列为空的行,并在种类为X时显示该值?
这是因为客户只希望员工了解这些物品的库存,而不是其他所有物品的库存。
2个回答

3
您可以使用 CASE 来将 tipo 列与所需的值进行比较:
select id, 
   id_pedido, 
   p.id_articulo, 
   p.descripcion, 
   p.fecha, 
   u.nombre, 
   p.local,
   case when a.tipo = 'X' then a.inicia+a.entra-a.sale end Existencias, 
   a.tipo
from pedidos p 
   join usuarios u on p.id_usuario=u.id_usuario 
   join articulos a on a.id_articulo=p.id_articulo
where estado='activo'

非常感谢!!!我不知道如何使用case以及何时使用它,我喜欢每天学习新东西的感觉。 - Edgar Holguin
@EdgarHolguin -- 没问题,很高兴我们能帮到你! - sgeddes

0
我会使用 SQL Case 语句来有条件地返回值。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接