sql - 连接表或联合表
问题描述
我正在尝试在同一个查询中加入两个选择。我尝试了一个联合,但我需要将寄存器应用于同一行。
我的选择1是:
SELECT
b.cod_articulo,
b.nom_articulo,
sum(a.cantidad) AS 'Cantidad',
sum(a.cantidad * b.conv_art_prec) AS 'Total Peso',
b.cod_uni_pesoart AS 'Unidad'
FROM
cpf_stockaux a
LEFT OUTER JOIN
ct_articulos b
ON
a.cod_articulo=b.cod_articulo
WHERE
b.cod_articulo IN ('40101','411','4112','4134','4135','4201','433','434','446','451','467','473','480','501','540','551','5510','562','5625','58201','635','5613')
AND YEAR(a.fec_doc)='2021'
AND MONTH(a.fec_doc)='05'
GROUP BY b.cod_articulo, b.nom_articulo, b.cod_uni_pesoart
该选择的结果是:
cod_articulo|nom_articulo |Cantidad |Total Peso |Unidad
40101 |SEMOLIN (BOLSA 25 KG.) |17998.00000 |449950.00000000000 |Kg
4201 |HARINA DE TRIGO 0000 PARA TAPAS KG.(BOLSA 25 KG.) |13280.00000 |332000.00000000000 |Kg
451 |HARINA DE TRIGO 000 CON MEJORADORES KG.A GRANEL |1094484.88000 |1094484.88000000000 |Kg
501 |HARINA 00 CON MEJORADORES KG. A GRANEL |2097668.36000 |2097668.36000000000 |Kg
551 |HARINA 0 CON MEJORADORES KG. A GRANEL |4859169.16000 |4859169.16000000000 |Kg
5510 |HARINA 0 SIN ADITIVACION KG. GRANEL |2138322.64050 |2138322.64050000000 |Kg
5613 |AFRECHILLO DE TRIGO KG. A GRANEL |6850287.25000 |6850287.25000000000 |Kg
562 |SALVADO DE TRIGO KG.(BOLSA 25 KG.) |1380.00000 |34500.00000000000 |Kg
5625 |SALVADO KG. (BOLSA 20 KG.) |132.00000 |2640.00000000000 |Kg
58201 |HARINA INTEGRAL KG. (BOLSA 25 KG.) |64657.00000 |1616425.00000000000 |Kg
我的第二个选择:
SELECT
c.cod_articulo,
c.nom_articulo,
sum(b.total) AS 'Cantidad No Conf.',
sum(b.total * c.conv_art_prec) AS 'Total No Conf. Peso',
FROM
cpt_parteprod b
LEFT OUTER JOIN
ct_articulos c
ON
b.cod_articulo=c.cod_articulo
WHERE
c.cod_articulo IN ('40101','411','4112','4134','4135','4201','433','434','446','451','467','473','480','501','540','551','5510','562','5625','58201','635','5613')
AND b.cod_doc = 'ppro'
AND YEAR(b.fec_doc)='2021'
AND MONTH(b.fec_doc)='05'
AND YEAR(b.fec_doc)='2021'
AND MONTH(b.fec_doc)='05'
AND b.formulario = 'TprdParteEMoliNC'
GROUP BY c.cod_articulo, c.nom_articulo, c.cod_uni_pesoart
该选择的结果是:
cod_articulo|nom_articulo |Cantidad No Conf. |Total No Conf. Peso |Unidad
40101 |SEMOLIN (BOLSA 25 KG.) |6.00000 |150.00000000000 |Kg
4201 |HARINA DE TRIGO 0000 PARA TAPAS KG.(BOLSA 25 KG.) |189.00000 |4725.00000000000 |Kg
58201 |HARINA INTEGRAL KG. (BOLSA 25 KG.) |3.00000 |75.00000000000 |Kg
而我正在尝试做的事情:
cod_articulo|nom_articulo |Unidad |Total |Unidad |Cantidad No Conf. |Total No Conf. Peso |Unidad
40101 |SEMOLIN (BOLSA 25 KG.) |17998.00000 |449950.00000000000 |Kg |6.00000 |150.00000000000 |Kg
4201 |HARINA DE TRIGO 0000 PARA TAPAS KG.(BOLSA 25 KG.) |13280.00000 |332000.00000000000 |Kg |189.00000 |4725.00000000000 |Kg
451 |HARINA DE TRIGO 000 CON MEJORADORES KG.A GRANEL |1094484.88000 |1094484.88000000000 |Kg |0 |0 |Kg
501 |HARINA 00 CON MEJORADORES KG. A GRANEL |2097668.36000 |2097668.36000000000 |Kg |0 |0 |Kg
551 |HARINA 0 CON MEJORADORES KG. A GRANEL |4859169.16000 |4859169.16000000000 |Kg |0 |0 |Kg
5510 |HARINA 0 SIN ADITIVACION KG. GRANEL |2138322.64050 |2138322.64050000000 |Kg |0 |0 |Kg
5613 |AFRECHILLO DE TRIGO KG. A GRANEL |6850287.25000 |6850287.25000000000 |Kg |0 |0 |Kg
562 |SALVADO DE TRIGO KG.(BOLSA 25 KG.) |1380.00000 |34500.00000000000 |Kg |0 |0 |Kg
5625 |SALVADO KG. (BOLSA 20 KG.) |132.00000 |2640.00000000000 |Kg |0 |0 |Kg
58201 |HARINA INTEGRAL KG. (BOLSA 25 KG.) |64657.00000 |1616425.00000000000 |Kg |3.00000 |75.00000000000 |Kg
对于我有 0 的情况,很明显我使用了 CASE
解决方案
执行此联接的最佳方法是使用“FULL OUTER JOIN”图像解释完全外部联接,因为您需要两个数据的完整信息,在这种情况下您可以使用以下代码:
Select
A.cod_articulo,
A.nom_articulo,
A.Cantidad,
A.Total_Peso,
A.Unidad,
B.Cantidad_No_Conf,
B.Total_No_Conf_Peso
from (SELECT
b.cod_articulo,
b.nom_articulo,
sum(a.cantidad) AS 'Cantidad',
sum(a.cantidad * b.conv_art_prec) AS Total_Peso,
b.cod_uni_pesoart AS 'Unidad'
FROM
cpf_stockaux a
LEFT OUTER JOIN
ct_articulos b
ON
a.cod_articulo=b.cod_articulo
WHERE
b.cod_articulo IN ('40101','411','4112','4134','4135','4201','433','434','446','451','467','473','480','501','540','551','5510','562','5625','58201','635','5613')
AND YEAR(a.fec_doc)='2021'
AND MONTH(a.fec_doc)='05'
GROUP BY b.cod_articulo, b.nom_articulo, b.cod_uni_pesoart) as A
FULL OUTER JOIN
(SELECT
c.cod_articulo,
c.nom_articulo,
sum(b.total) AS Cantidad_No_Conf,
sum(b.total * c.conv_art_prec) AS Total_No_Conf_Peso,
FROM
cpt_parteprod b
LEFT OUTER JOIN
ct_articulos c
ON
b.cod_articulo=c.cod_articulo
WHERE
c.cod_articulo IN ('40101','411','4112','4134','4135','4201','433','434','446','451','467','473','480','501','540','551','5510','562','5625','58201','635','5613')
AND b.cod_doc = 'ppro'
AND YEAR(b.fec_doc)='2021'
AND MONTH(b.fec_doc)='05'
AND YEAR(b.fec_doc)='2021'
AND MONTH(b.fec_doc)='05'
AND b.formulario = 'TprdParteEMoliNC'
GROUP BY c.cod_articulo, c.nom_articulo, c.cod_uni_pesoart) as B
ON A.cod_articulo = B.cod_articulo
推荐阅读
- reactjs - Material-UI 自动完成复选框问题
- java - android 中的 Roboelectic 测试抛出 java.lang.NoSuchFieldError: tag_on_apply_window_listener
- php - 联系表格 7 是必需的,即使它不是必填字段
- java - 将 ArrayList 传递给另一个场景
- python - 在 Django 中过滤多个数据
- javascript - 插入数据库的数据不正确
- python - Pandas:在 groupby 之后使用 apply 时,Series 的真值不明确
- javascript - jQuery:基于常量值的验证,例如(+50 或 -50)具有相同货币的常量值
- typescript - Typescript Tips popup 只显示最终的分析类型结果,而不是中间定义
- python - 从函数中改变 PyQt5 QWidget