# CTE nao agrupa

• ### Pergunta

• Boa tarde a todos,

Prezados nao sei aonde esta esse misterio, na Sql abaixo nao esta agrupando,

SQL

SELECT
(R.CODFUNCAO)    AS 'C',
(R.FUNCAOATUAL)  AS 'C1'/*,
(R.DT)            AS 'DT',
MAX(R.DT1)          AS 'DT1'*/
FROM
(
SELECT F.CODFUNCAO  AS 'CODFUNCAO',
NULL                 AS 'FUNCAOATUAL'/*,
DTMUDANCA           AS 'DT',
NULL                AS 'DT1'*/
FROM PFUNC AS P
INNER JOIN PFHSTFCO      AS F  (NOLOCK)ON F.CODCOLIGADA  = P.CODCOLIGADA AND F.CHAPA   = P.CHAPA
INNER JOIN PFUNCAO       AS P1 (NOLOCK)ON P1.CODCOLIGADA = F.CODCOLIGADA AND P1.CODIGO = F.CODFUNCAO
WHERE P.CHAPA  =  '010684'
AND F.MOTIVO = '02'
UNION

SELECT NULL    AS 'CODFUNCAO',
F.CODFUNCAO   AS 'FUNCAOATUAL'/*,
null          AS 'DT',
MAX(F.DTMUDANCA)   AS 'DT1'*/

FROM PFUNC AS P
INNER JOIN PFHSTFCO      AS F  (NOLOCK)ON F.CODCOLIGADA  = P.CODCOLIGADA AND F.CHAPA   = P.CHAPA
INNER JOIN PFUNCAO       AS P1 (NOLOCK)ON P1.CODCOLIGADA = F.CODCOLIGADA AND P1.CODIGO = F.CODFUNCAO
WHERE P.CHAPA  =  '010684'
AND F.MOTIVO <> '02'

)
R(CODFUNCAO,FUNCAOATUAL)

GROUP BY  CODFUNCAO    ,
FUNCAOATUAL

NULL       000119
000339    NULL

000339  000119

muito obrigado a todos pela ajuda

quarta-feira, 4 de abril de 2012 18:59

### Respostas

• Boa tarde Ronnie,

null é diferente do valor 000339  por isto não são agrupados.

veja se o comando abaixo retorna o que você precisa.

```WITH CTE_1 AS(
SELECT F.CODFUNCAO AS 'CODFUNCAO', NULL AS 'FUNCAOATUAL'
FROM PFUNC AS P
INNER JOIN PFHSTFCO AS F(NOLOCK)
AND F.CHAPA = P.CHAPA
INNER JOIN PFUNCAO AS P1(NOLOCK)
AND P1.CODIGO = F.CODFUNCAO
WHERE P.CHAPA = '010684'
AND F.MOTIVO = '02'

UNION

SELECT NULL AS 'CODFUNCAO', F.CODFUNCAO AS 'FUNCAOATUAL'
FROM PFUNC AS P
INNER JOIN PFHSTFCO AS F(NOLOCK)
AND F.CHAPA = P.CHAPA
INNER JOIN PFUNCAO AS P1(NOLOCK)
AND P1.CODIGO = F.CODFUNCAO
WHERE P.CHAPA = '010684'
AND F.MOTIVO <> '02')

SELECT (SELECT CODFUNCAO
FROM  CTE_1 WHERE CODFUNCAO IS NOT NULL)AS COL1,
(SELECT FUNCAOATUAL
FROM  CTE_1 WHERE FUNCAOATUAL IS NOT NULL)AS COL2```

Abçs,

quarta-feira, 4 de abril de 2012 19:22

### Todas as Respostas

• Boa tarde Ronnie,

null é diferente do valor 000339  por isto não são agrupados.

veja se o comando abaixo retorna o que você precisa.

```WITH CTE_1 AS(
SELECT F.CODFUNCAO AS 'CODFUNCAO', NULL AS 'FUNCAOATUAL'
FROM PFUNC AS P
INNER JOIN PFHSTFCO AS F(NOLOCK)
AND F.CHAPA = P.CHAPA
INNER JOIN PFUNCAO AS P1(NOLOCK)
AND P1.CODIGO = F.CODFUNCAO
WHERE P.CHAPA = '010684'
AND F.MOTIVO = '02'

UNION

SELECT NULL AS 'CODFUNCAO', F.CODFUNCAO AS 'FUNCAOATUAL'
FROM PFUNC AS P
INNER JOIN PFHSTFCO AS F(NOLOCK)
AND F.CHAPA = P.CHAPA
INNER JOIN PFUNCAO AS P1(NOLOCK)
AND P1.CODIGO = F.CODFUNCAO
WHERE P.CHAPA = '010684'
AND F.MOTIVO <> '02')

SELECT (SELECT CODFUNCAO
FROM  CTE_1 WHERE CODFUNCAO IS NOT NULL)AS COL1,
(SELECT FUNCAOATUAL
FROM  CTE_1 WHERE FUNCAOATUAL IS NOT NULL)AS COL2```

Abçs,

quarta-feira, 4 de abril de 2012 19:22
• Neste problema tem a sua solucao!

Usando SQL gere todas as possibilidades existente entre as colunas 1, 2 e 3.
Este é um exemplo pratico de utilizacao de query recurssive aplicada a loteria dos esportes (loteca).
O resultado deverá ser 144 aposta de 15 elemento pois deve ser basear na coluna CASA cada resultado.

primeira linha == B1:A1:A1:A1:A1:B1:A1:A1:A1:A1:A1:B1:A1:A1:A1:
ultima linha ==   B1:B1:A1:B1:A1:CA1::B1:A1:A1:B1:A1:B1:A1:B1:A1:

Tabela

CREATE TABLE [dbo].[Jogo](
[Jogo] [float] NULL,
[Casa] [float] NULL,
[Coluna1] [nvarchar](3) NULL,
[Coluna2] [nvarchar](3) NULL,
[Coluna3] [nvarchar](3) NULL
) ON [PRIMARY]

GO

Jogo,Casa,Coluna1,Coluna2,Coluna3
255,1,C1:,NULL,NULL
255,2,A1:,B1:,C1:
255,3,A1:,NULL,NULL
255,4,A1:,C1:,NULL
255,5,A1:,NULL,NULL
255,6,C1:,B1:,NULL
255,7,A1:,C1:,NULL
255,8,A1:,NULL,NULL
255,9,A1:,NULL,NULL
255,10,A1:,B1:,C1:
255,11,A1:,NULL,NULL
255,12,C1:,NULL,NULL
255,13,A1:,NULL,NULL
255,14,A1:,C1:,NULL
255,15,A1:,NULL,NULL

Jogo Casa Coluna1 Coluna2 Coluna3
255 1 C1: NULL NULL
255 2 A1: B1: C1:
255 3 A1: NULL NULL
255 4 A1: C1: NULL
255 5 A1: NULL NULL
255 6 C1: B1: NULL
255 7 A1: C1: NULL
255 8 A1: NULL NULL
255 9 A1: NULL NULL
255 10 A1: B1: C1:
255 11 A1: NULL NULL
255 12 C1: NULL NULL
255 13 A1: NULL NULL
255 14 A1: C1: NULL
255 15 A1: NULL NULL

quinta-feira, 5 de abril de 2012 12:22
• ola Estou procurando um codigo fonte para gerar todas as apostas da loteca se pude ajudar agradeco.

Qualquer ajudar sera bem vinda. se puder mandar no meu email. (vbvieiras@yahoo.com.br)

domingo, 5 de março de 2017 17:29