juntas informaçoes
-
quinta-feira, 22 de março de 2012 20:59
Prezados boa tarde!
vejam se o possivel,
SQL
SELECT
A.IDOBJOF AS 'Objeto$',
I.VALORMEDIDOR2 AS 'KM Entrada',
I.VALORMEDIDOR1 AS 'HM Entrada',
I2.VALORMEDIDOR2 AS 'KM Saida',
I2.VALORMEDIDOR1 AS 'H Saida',
I2.VALORMEDIDOR2 - I.VALORMEDIDOR2 AS 'Total_KM',
I2.VALORMEDIDOR1 - I.VALORMEDIDOR1 AS 'Total_HM'FROM OFOBJOFICINA AS O (NOLOCK)
INNER JOIN OFMODELO AS M (NOLOCK) ON M.IDTIPOOBJ = O.IDTIPOOBJ AND M.CODMODELO = O.CODMODELO
INNER JOIN OFSUBMODELO AS S (NOLOCK) ON O.IDTIPOOBJ = M.IDTIPOOBJ AND S.CODMODELO = O.CODMODELO
AND S.CODSUBMODELO = O.CODSUBMODELO
INNER JOIN OFSTATUSEQP AS F1 (NOLOCK) ON F1.CODCOLIGADA = O.CODCOLIGADA AND F1.CODSTATUS = O.STATUS
INNER JOIN OFHISTOBJFILHO AS A (NOLOCK) ON A.CODCOLIGADA = O.CODCOLIGADA AND A.IDOBJOF = O.IDOBJOF
INNER JOIN OFPOSICAOFILHO AS P (NOLOCK) ON P.CODPOSICAOFILHO = A.CODPOSICAOFILHO
LEFT JOIN OFMOTIVORETIRADAOBJFILHO AS T ON T.CODMOTIVORET = A.CODMOTIVORET
INNER JOIN OFHISTINDICADOR AS I (NOLOCK) ON I.IDHISTINDICADOR = A.IDHISTINDICADORENTRADA
AND I.CODCOLIGADA = A.CODCOLIGADA AND I.IDOBJOF = A.IDOBJOFPAI
INNER JOIN OFHISTINDICADOR AS I2 (NOLOCK) ON I2.IDHISTINDICADOR = A.IDHISTINDICADORsaida
AND I2.CODCOLIGADA = A.CODCOLIGADA AND I2.IDOBJOF = A.IDOBJOFPAIWHERE O.IDTIPOOBJ = '14'
AND A.CODMOTIVORET IN ('3','4')
and A.IDOBJOF in ('1233')
ORDER BY M.MODELO ,S.DESCRICAOresultado
Objeto KM Entr KM Saida TOTAL KM HM Entr HM Saida TOTAL HM
1233 21559.00 27826.00 6267.00 0 0 0
Aos Feras de SQl, ai vem minha duvida, essas infomaçoes KM e HM, nunca vao se repetir, eu preciso que de uma forma que quanto tivesse valor eu traria no meu exemplo somente tenho os KM, so traria essa KM, conforme o exemplo abaixo.
informações viessem da forma abaixo:
Objeto KM Entr KM Saida TOTAL KM
1233 21559.00 27826.00 6267.00
sera que tem como fazer essa magica.
obrigado a todos
Todas as Respostas
-
sexta-feira, 23 de março de 2012 19:12Moderador
Ronnie,
Se entendi bem, quando determinado campo existir informações, voce não quer que outros sejam visualizados, agora, se o mesmo não existir, deve-se visualizar os outros.
Isso é possivel em parte.
Por que não da: O SQL Server trabalha de forma tabular, ou seja, o numero de colunas deve ser identico para todas as linhas de um select, se não, voce teria linhas com menos colunas, perdendo a caracteristica de tabela
Como é possivel: Ao invez de trazer uma coluna ou outra, voce cria uma mista, e traz as informações que precisa nela, exemplo:
SELECT Nome,
CASE
WHEN Sobrenome IS NULL THEN CampoIdCliente
ELSE Sobrenome END As segundoValor
FROM Tabela
Fabrizzio A. Caputo
MCT
Certificações:
Oracle OCA 11g
MCITP SQL Server 2008 Implementation and Maintenance
MCITP SQL Server 2008 Developer
Blog Pessoal: www.fabrizziocaputo.wordpress.com
Blog Empresa: www.tripletech.com.br/blog
Twitter: @FabrizzioCaputo
Email: fabrizzio.antoniaci@gmail.com -
terça-feira, 27 de março de 2012 14:39
De acordo com sua explicação creio que o coalesce resolve teu problema.
SELECT A.IDOBJOF AS 'Objeto$', coalesce(I.VALORMEDIDOR2, I.VALORMEDIDOR1) AS "Entrada", coalesce(I2.VALORMEDIDOR2, I2.VALORMEDIDOR1) AS "Saida", (coalesce(I2.VALORMEDIDOR2, I2.VALORMEDIDOR1) - coalesce(I.VALORMEDIDOR2, I.VALORMEDIDOR1)) as "Total" FROM OFOBJOFICINA AS O (NOLOCK) INNER JOIN OFMODELO AS M (NOLOCK) ON M.IDTIPOOBJ = O.IDTIPOOBJ AND M.CODMODELO = O.CODMODELO INNER JOIN OFSUBMODELO AS S (NOLOCK) ON O.IDTIPOOBJ = M.IDTIPOOBJ AND S.CODMODELO = O.CODMODELO AND S.CODSUBMODELO = O.CODSUBMODELO INNER JOIN OFSTATUSEQP AS F1 (NOLOCK) ON F1.CODCOLIGADA = O.CODCOLIGADA AND F1.CODSTATUS = O.STATUS INNER JOIN OFHISTOBJFILHO AS A (NOLOCK) ON A.CODCOLIGADA = O.CODCOLIGADA AND A.IDOBJOF = O.IDOBJOF INNER JOIN OFPOSICAOFILHO AS P (NOLOCK) ON P.CODPOSICAOFILHO = A.CODPOSICAOFILHO LEFT JOIN OFMOTIVORETIRADAOBJFILHO AS T ON T.CODMOTIVORET = A.CODMOTIVORET INNER JOIN OFHISTINDICADOR AS I (NOLOCK) ON I.IDHISTINDICADOR = A.IDHISTINDICADORENTRADA AND I.CODCOLIGADA = A.CODCOLIGADA AND I.IDOBJOF = A.IDOBJOFPAI INNER JOIN OFHISTINDICADOR AS I2 (NOLOCK) ON I2.IDHISTINDICADOR = A.IDHISTINDICADORsaida AND I2.CODCOLIGADA = A.CODCOLIGADA AND I2.IDOBJOF = A.IDOBJOFPAI WHERE O.IDTIPOOBJ = '14' AND A.CODMOTIVORET IN ('3','4') and A.IDOBJOF in ('1233') ORDER BY M.MODELO ,S.DESCRICAOBoa Sorte !
Antero
- Marcado como Resposta Ronnie Von terça-feira, 27 de março de 2012 18:31
-
terça-feira, 27 de março de 2012 18:32
Parabens Pessoal. Fiz conforme o exemplo do Antero, Obrigado

