Sql server 带条件的SQL左连接查询
我的程序中有两个表格用于管理库存: 关节(项目): 标识(标识项)、名称(名称)、tipo(种类) Salidas(发货): id商品(id商品)、无法销售(装运金额)、进口总额(总额) 成本),almacen_destino(shipemt stock destiny),日期 我被要求做一个产品的静态列表,这样它们总是以相同的顺序显示相同的项目,其中项目种类(tipo)=一些东西 当我想在两个日期之间搜索特定的装运库存设计(almacen_destino)时,我无法获得所有同类(tipo)的项目,因为它们没有装运 这是我到目前为止提出的问题:Sql server 带条件的SQL左连接查询,sql-server,left-join,Sql Server,Left Join,我的程序中有两个表格用于管理库存: 关节(项目): 标识(标识项)、名称(名称)、tipo(种类) Salidas(发货): id商品(id商品)、无法销售(装运金额)、进口总额(总额) 成本),almacen_destino(shipemt stock destiny),日期 我被要求做一个产品的静态列表,这样它们总是以相同的顺序显示相同的项目,其中项目种类(tipo)=一些东西 当我想在两个日期之间搜索特定的装运库存设计(almacen_destino)时,我无法获得所有同类(tipo)的项
select a.id_articulo, sum(s.cant_sale) as Cant_sale, sum(s.imp_total) as Imp_total
from articulos a left join salidas s
on a.id_articulo=s.id_articulo
WHERE a.tipo='EMPAQUES'
and FECHA BETWEEN '06/06/2012' AND '12/06/2012'
and s.almacen_destino like 'CERRO COLORADO'
group by a.id_articulo
它只显示在这些日期之间tipo(种类)=Empaques的已发货项目,我想显示相同的信息加上所有其他未发货的相同种类(tipo)的项目,即使发货金额和总成本为空
事先,谢谢。您必须在
ON
子句中包含任何必须与左连接
ed表结合的WHERE
子句块。您必须在ON
子句中包含任何必须与左连接
ed表结合的WHERE
子句块。将筛选条件放在外部表将外部联接转换为内部联接。您是否尝试过:
SELECT
a.id_articulo,
SUM(s.cant_sale) AS Cant_sale,
SUM(s.imp_total) AS Imp_total
FROM
dbo.articulos AS a
LEFT OUTER JOIN
dbo.salidas AS s
ON a.id_articulo = s.id_articulo
AND s.almacen_destino = 'CERRO COLORADO'
AND s.FECHA BETWEEN '20120606' AND '20120612'
WHERE a.tipo = 'EMPAQUES'
GROUP BY a.id_articulo;
我在这里猜到了几件事:
位于FECHA
中-如果不是,则将其移动到WHERE子句salidas
- 你的日期是d/m/y。请始终使用明确的日期格式-您可能在英国或加拿大,但并非您的观众中的每个人都在,我们无法读懂您的心思
SELECT
a.id_articulo,
SUM(s.cant_sale) AS Cant_sale,
SUM(s.imp_total) AS Imp_total
FROM
dbo.articulos AS a
LEFT OUTER JOIN
dbo.salidas AS s
ON a.id_articulo = s.id_articulo
AND s.almacen_destino = 'CERRO COLORADO'
AND s.FECHA BETWEEN '20120606' AND '20120612'
WHERE a.tipo = 'EMPAQUES'
GROUP BY a.id_articulo;
我在这里猜到了几件事:
位于FECHA
中-如果不是,则将其移动到WHERE子句salidas
- 你的日期是d/m/y。请始终使用明确的日期格式-您可能在英国或加拿大,但并非您的观众中的每个人都在,我们无法读懂您的心思
s.FECHA
是包括时间在内的日期时间,我也会记住它,你想避免在两个时间之间:非常感谢,它解决了我的问题,对日期格式感到抱歉,我也会记住,如果s.FECHA
是datetime,包括时间,你想避免在两个时间之间: