0

出荷とエントリの 2 つのテーブルがあります。

選択した item_id=113 のエントリと item_id=204 の出荷を選択して別のテーブルに挿入する必要があります。私の選択は、現在の月と年の週ごとのエントリと出荷の合計です。

私はこの2つのクエリを、各アイテムに対してそれぞれ持っています。

sum(cantidad_ent)=エントリー数量 fecha=日付

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/flour sacks) as Rendimiento (Production performance) 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

前もって感謝します!!

4

2 に答える 2

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

うまくいけば、私はタイプミスをしたり、何かを省略したりしませんでした. 一般的なテーブル式を使用するよりもエレガントな方法があるかもしれませんが、これでうまくいくと思います。ただし、よくテストして、失敗した場合はお知らせください:-) 編集済み-はい、整数を実数としてキャストするのを忘れていたので、分割できました。現在修正済み

于 2013-07-09T22:47:04.480 に答える