locked
query RRS feed

  • Pergunta

  • Pessoal

    Fiz essa query no sql 2012

    SELECT
    B2_FILIAL [FILIAL]
    ,B2_COD [CODIGO]
    ,B1_DESC [DESCRIÇÃO]
    ,B1_UM [UNIDADE]
    ,B2_QATU   [QTDE]
    ,[FALTA INSPEÇÃO]=(SELECT ISNULL(SB2010.B2_QATU,'0') FROM SB2010 WHERE B2_FILIAL='0102'
                  AND B2_LOCAL='98'AND  B2_COD=B1_COD )
    ,[BLOQUEADO]=(SELECT ISNULL(SB2010.B2_QATU,'0') FROM SB2010 WHERE B2_FILIAL='0102'
                  AND B2_LOCAL='99'AND  B2_COD=B1_COD )
                    
    ,[TOTAL] = (SELECT SUM (SB2010.B2_QATU) FROM SB2010 WHERE B2_FILIAL='0102'
                  AND B2_LOCAL IN('02','98','99')AND  B2_COD=B1_COD )
    ,[QTDE P / PALLET] =
        CASE
                      WHEN SB1010.B1_COD='W10488059' THEN '120' 
                       WHEN SB1010.B1_COD='W10488060' THEN '120' 
                 END

    FROM SB2010 , SB1010
    WHERE B2_FILIAL='0102'
    AND B1_FILIAL='0102'
    AND B1_COD= B2_COD
    AND SB2010.D_E_L_E_T_<>'*'
    AND SB1010.D_E_L_E_T_<>'*'
    AND B2_LOCAL IN('02')
    --AND SB2010.B2_QATU>'0.00'
    ORDER BY
    B2_LOCAL,B2_COD

    mais quando vou rodar apresenta esse mensagem

    SQL Server Database Error: Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

    sexta-feira, 3 de outubro de 2014 19:49

Respostas

  • Marco,

    Como nossos amigos indicaram, seu problema está relacionado nas subqueries:

    [FALTA INSPEÇÃO]=(SELECT ISNULL(SB2010.B2_QATU,'0') FROM SB2010 WHERE B2_FILIAL='0102'
                  AND B2_LOCAL='98'AND  B2_COD=B1_COD )
    
    
    ,[BLOQUEADO]=(SELECT ISNULL(SB2010.B2_QATU,'0') FROM SB2010 WHERE B2_FILIAL='0102'
                  AND B2_LOCAL='99'AND  B2_COD=B1_COD )

    Sugiro que você revise os critérios da cláusula WHERE nestas subqueries e se o resultado for repetitivo adicione as condições TOP 1 e DISTINCT para evitar erros.

    Segue um exemplo abaixo para você adaptar às suas duas subqueries:

    [FALTA INSPEÇÃO]=(SELECT DISTINCT TOP 1 ISNULL(SB2010.B2_QATU,'0') FROM 
    ...

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    segunda-feira, 6 de outubro de 2014 17:39
    Moderador

Todas as Respostas

  • Bom dia Marco,

    Você tem três subconsultas no seu SELECT, uma é no campo [FALTA INSPEÇÃO], outra no campo  [BLOQUEADO] e outra no campo [TOTAL].

    A última subconsulta ([TOTAL]) não tem problema, porque está utilizando a função SUM.

    O erro está sendo gerado em uma das duas primeiras, onde está retornando mais de um valor para apenas um campo (por exemplo, está retornando os valores "123" e "456" para apenas um campo).

    Uma dica para resolver esse problema é utilizar a sintaxe SELECT TOP 1, que retornará apenas o primeiro registro encontrado dentro da ordenação da sua consulta.

    Abs.

    segunda-feira, 6 de outubro de 2014 12:31
  • Marco,

    Como nossos amigos indicaram, seu problema está relacionado nas subqueries:

    [FALTA INSPEÇÃO]=(SELECT ISNULL(SB2010.B2_QATU,'0') FROM SB2010 WHERE B2_FILIAL='0102'
                  AND B2_LOCAL='98'AND  B2_COD=B1_COD )
    
    
    ,[BLOQUEADO]=(SELECT ISNULL(SB2010.B2_QATU,'0') FROM SB2010 WHERE B2_FILIAL='0102'
                  AND B2_LOCAL='99'AND  B2_COD=B1_COD )

    Sugiro que você revise os critérios da cláusula WHERE nestas subqueries e se o resultado for repetitivo adicione as condições TOP 1 e DISTINCT para evitar erros.

    Segue um exemplo abaixo para você adaptar às suas duas subqueries:

    [FALTA INSPEÇÃO]=(SELECT DISTINCT TOP 1 ISNULL(SB2010.B2_QATU,'0') FROM 
    ...

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"
    segunda-feira, 6 de outubro de 2014 17:39
    Moderador