SQL查询,仅在选择列的值时

时间:2013-05-08 02:42:42

标签: sql sql-server select sql-server-2005-express

我正在使用SLQ服务器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 个答案:

答案 0 :(得分: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'

答案 1 :(得分:0)

我会使用一个可用于有条件地返回值的SQL Case语句