我有两张桌子,货物和条目。
我必须选择并在另一个表中插入所选item_id=113的条目和item_id=204的出货量,我的选择是按当前月份和年份的周列出的条目和出货量的总和。
我有这两个问题,每个查询每一项。
sum(Cantidad_ent)=输入量fecha=Date
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温先生把面粉袋从仓库里寄出来,然后把它们加工成玉米饼,然后我们从做的玉米饼上做一个入口。这个查询是为了让我知道每周发送和制作多少玉米饼和面粉袋,我还必须登记每周制作多少个玉米饼。
(玉米饼_条目/面粉袋)为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提前谢谢!!
发布于 2013-07-09 22:47:04
试试这个:
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希望我没有做错字或者遗漏了什么。可能有比使用通用表表达式更优雅的方法来实现这一点,但我认为这对您来说是可行的。试一试,如果我搞砸了,让我知道:-)编辑的-是的,忘记把整数转换成真实的,这样它们才能被分割;现在修正了。
发布于 2013-07-09 21:27:21
像这样的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实例发现这里
https://stackoverflow.com/questions/17557116
复制相似问题