1

私はこのコードを持っています:

select
  B.plc_nomeConta, B.plc_classificador, B.plc_id,
  A.cap_idPlanoContasFin, SUM(A.cap_valorfatura) as Total     
from
  tbl_PlanoFinanceiro B
  left outer join erp_contaspagar A on B.plc_id = A.cap_idPlanoContasFin
   /*  where A.cap_idEmpresa like 2*/
group by
  B.plc_nomeConta,
  B.plc_classificador,
  B.plc_id,
  A.cap_idPlanoContasFin 

このコードは185行を返します。

(-) COFINS     10.01.01.01.004  330  330   971090,97
(-) ICMS       10.01.01.01.002  328  328   1378407,11
(-) IMPOSTOS   10.01.00.00.000  324  NULL  NULL
(-) IMPOSTOS   10.01.01.00.000  325  NULL  NULL
(-) IMPOSTOS   10.01.01.01.000  326  NULL  NULL
(-) ISS        10.01.01.01.001  327  327   1000960,59
(-) PIS        10.01.01.01.003  329  329   240600,27

しかし、コメントを外すと、、Inneedが表示where /* where A.cap_idEmpresa like 2*/される行のみが返され ます。A.cap_idPlanoContasFin is not nullB.plc_nomeConta, B.plc_classificador, B.plc_id

4

2 に答える 2

4

フィルタWHEREはをに変換しLEFT OUTER JOINていINNER JOINます。

cap_idEmpresa基本的に、「左側のすべてのレコードを表示し、右側のレコードのみが一致し、値が「」であると言っています2

これは、一致するレコードのみを表示していることを意味します。つまり、一致しないレコードは、そのフィールドにINNER JOIN値を含めることはできません。2

修正するには、nullを考慮する必要があります。

WHERE (A.cap_idEmpresa like 2 OR A.cap_idEmpresa IS NULL)

または要件を調整します。

于 2012-11-13T19:31:50.437 に答える
0

私はJNKとcadrell0で解決し、2のようなA.Cap_idempresaをJOinの一部にしました。ここにコードがあるおかげで、

        alter proc Ntrimestre (@emp integer,@inicio datetime,@fim datetime) as
        select  B.plc_nomeConta, B.plc_classificador ,B.plc_id ,
        A.cap_idPlanoContasFin, SUM (A.cap_valorfatura) as Total
        from tbl_PlanoFinanceiro B
        left outer join erp_contaspagar A on B.plc_id = A.cap_idPlanoContasFin 
        and   A.cap_idEmpresa like @emp
        and A.cap_vencfatura <= convert(datetime,@fim,1) 
        and cap_vencfatura >= convert(datetime,@inicio,1) 
        group by B.plc_nomeConta, B.plc_classificador ,B.plc_id, A.cap_idPlanoContasFin
       order by B.plc_classificador 

どこで他の方法:

       alter proc NtrimestreMzFSant (@inicio datetime,@fim datetime) as
       select  B.plc_nomeConta, B.plc_classificador ,B.plc_id ,
        A.cap_idPlanoContasFin, SUM (A.cap_valorfatura) as Total
       from tbl_PlanoFinanceiro B
       left outer join erp_contaspagar A on B.plc_id = A.cap_idPlanoContasFin  
        and A.cap_vencfatura <= convert(datetime,@fim,1) 
         and A.cap_vencfatura >= convert(datetime,@inicio,1) 
        where B.plc_tipo <> 'Sintética' and A.cap_idEmpresa =2 or A.cap_idEmpresa=2234 
        group by B.plc_nomeConta, B.plc_classificador ,B.plc_id, A.cap_idPlanoContasFin
        order by B.plc_classificador 

助けてみんなに感謝します

于 2012-11-14T17:24:50.180 に答える