首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按当前月份的周选择

按当前月份的周选择
EN

Stack Overflow用户
提问于 2013-07-09 20:00:59
回答 2查看 833关注 0票数 0

我有两张桌子,货物和条目。

我必须选择并在另一个表中插入所选item_id=113的条目和item_id=204的出货量,我的选择是按当前月份和年份的周列出的条目和出货量的总和。

我有这两个问题,每个查询每一项。

sum(Cantidad_ent)=输入量fecha=Date

代码语言:javascript
运行
复制
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)=装运数量

代码语言:javascript
运行
复制
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)

他们回来了

代码语言:javascript
运行
复制
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

入库的玉米饼和寄出的麻袋是同时登记的,所以同一天我们有多少麻袋,有多少玉米饼是由这些麻袋制成的。

我想要的结果是这样的:

代码语言:javascript
运行
复制
Tortillas_entries/FlourSack_Shipment/Performance/Week/Month/Year
      4503                7             643.28    27    7    2013
      3822                6              637      28    7    2013

提前谢谢!!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-09 22:47:04

试试这个:

代码语言:javascript
运行
复制
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

希望我没有做错字或者遗漏了什么。可能有比使用通用表表达式更优雅的方法来实现这一点,但我认为这对您来说是可行的。试一试,如果我搞砸了,让我知道:-)编辑的-是的,忘记把整数转换成真实的,这样它们才能被分割;现在修正了。

票数 0
EN

Stack Overflow用户

发布于 2013-07-09 21:27:21

像这样的INNER JOIN应该能工作:

代码语言:javascript
运行
复制
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实例发现这里

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17557116

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档