我有两张桌子,货物和条目。
我必须在另一个表中选择并插入所选item_id = 113的条目以及item_id = 204的货件,我的选择是当前月份和年份的每周的条目和货件的总和。
我有两个查询,每个查询每个项目。
sum(cantidad_ent)=输入数量 日期星=日期
SELECT sum(cantidad_ent) Entradas_Tortilla, DATEPART(wk, fecha) Semana, DATEPART(m, fecha) Mes, DATEPART(yy, fecha)
FROM entradas
where id_articulo=113
and month(fecha)=month(getdate()) and year(fecha)=year(getdate())
GROUP BY DATEPART(wk, fecha), DATEPART(m, fecha), DATEPART(yy, fecha)
order by DATEPART(wk, fecha), datepart(m, fecha)
sum(cant_sale)=装运数量
SELECT sum(cant_Sale) Salidas_Costales, DATEPART(wk, fecha) Semana, DATEPART(m, fecha) Mes, DATEPART(yy, fecha)
FROM salidas
where id_articulo=204
and month(fecha)=month(getdate()) and year(fecha)=year(getdate())
GROUP BY DATEPART(wk, fecha), DATEPART(m, fecha), DATEPART(yy, fecha)
order by DATEPART(wk, fecha), datepart(m, fecha)
他们返回
Tortillas_entries/Week/Month/Year
4503 27 7 2013
3822 28 7 2013
FlourSack_shipments/Week/Month/Year
7 27 7 2013
6 27 7 2013
温文将面粉袋从仓库中取出,然后将它们加工成玉米饼,然后我们从制作的玉米饼中取出。这个查询是这样的,所以我知道有多少玉米饼和面粉袋被发送和制作一周,我还必须记录每周为总麻袋制作了多少玉米饼?
(tortillas_entries /面粉袋)作为Rendimiento(生产性能) 4503/7 3822/6
进入的玉米粉圆饼和送来的麻袋的总数是同时登记的,所以同一天我们有多少麻袋被送来,有多少玉米饼是用这些麻袋制成的。
我正在寻找的结果将是这样的:
Tortillas_entries/FlourSack_Shipment/Performance/Week/Month/Year
4503 7 643.28 27 7 2013
3822 6 637 28 7 2013
提前致谢!!
答案 0 :(得分:0)
这样的INNER JOIN
应该有效:
SELECT
sum(e.cantidad_ent) Tortillas_entries,
sum(s.cant_Sale) FlourSack_Shipment,
sum(cast(e.cantidad_ent as decimal(6,2))) / sum(s.cant_Sale) Performance,
DATEPART(wk, e.fecha) Semana,
DATEPART(m, e.fecha) Mes,
DATEPART(yy, e.fecha)
FROM entradas e
inner join salidas s on
DATEPART(wk, e.fecha) = DATEPART(wk, s.fecha) AND
DATEPART(m, e.fecha) = DATEPART(m, s.fecha) AND
DATEPART(yy, e.fecha) = DATEPART(yy, s.fecha)
where e.id_articulo=113
and s.id_articulo=204
and month(e.fecha)=month(getdate()) and year(e.fecha)=year(getdate())
GROUP BY DATEPART(wk, e.fecha), DATEPART(m, e.fecha), DATEPART(yy, e.fecha)
order by DATEPART(wk, e.fecha), datepart(m, e.fecha)
SQLFiddle示例找到here
答案 1 :(得分:0)
试试这个:
WITH My_CTE (Entradas_Tortilla, Semana, Mes, Ano) AS
(
SELECT sum(cantidad_ent) AS 'Entradas_Tortilla'
,DATEPART(wk, fecha) AS 'Semana'
,DATEPART(m, fecha) AS 'Mes'
,DATEPART(yy, fecha) AS 'Ano'
FROM entradas
WHERE id_articulo=113 and month(fecha)=month(getdate()) and year(fecha)=year(getdate())
GROUP BY DATEPART(wk, fecha)
,DATEPART(m, fecha)
,DATEPART(yy, fecha)
)
SELECT m.Entradas_Tortilla
,sum(s.cant_Sale) AS 'Salidas_Costales'
,CAST(m.Entradas_Tortilla AS REAL)/CAST(sum(s.cant_Sale) AS REAL) AS 'Performance'
,Semana
,Mes
,Ano
FROM My_CTE m INNER JOIN salidas s ON m.Semana = DATEPART(wk, s.fecha)
AND m.Mes = DATEPART(m, s.fecha)
AND m.Ano = DATEPART(yy, s.fecha)
WHERE s.id_articulo=204 and month(s.fecha)=month(getdate()) and year(s.fecha)=year(getdate())
GROUP BY Entradas_Tortilla, Semana, Mes, Ano
ORDER BY Ano, Mes, Semana
希望我没有写错字或留下一些东西。与使用公用表表达式相比,可能有更优雅的方法,但我认为这对您有用。尽管测试得很好,让我知道如果我搞砸了:-) EDITED - 是的,忘记将整数转换成真实的它们可以分开;现在修复