Usuário com melhor resposta
Resultado de um LEFT JOIN

Pergunta
-
Pessoal,
Imaginem este select:
IF OBJECT_ID('tempdb..#DIA') IS NOT NULL DROP TABLE #DIA IF OBJECT_ID('tempdb..#PROD') IS NOT NULL DROP TABLE #PROD --- SELECT 1 as dia, '2013-07-01' as data INTO #DIA UNION SELECT 2 as dia, '2013-07-02' as data UNION SELECT 3 as dia, '2013-07-03' as data UNION SELECT 4 as dia, '2013-07-04' as data UNION SELECT 5 as dia, '2013-07-05' as data -- SELECT * FROM #DIA --- SELECT 1 as dia, 'XPTO' as prod, 2 as qtd INTO #PROD UNION SELECT 2 as dia, 'XPTO' as prod, 5 as qtd UNION SELECT 2 as dia, 'BLA' as prod, 9 as qtd UNION SELECT 5 as dia, 'XPTO' as prod, 4 as qtd -- SELECT * FROM #PROD --- SELECT d.dia ,d.data ,p.* FROM #DIA d LEFT JOIN #PROD p ON (d.dia = p.dia)
Com este resultado:
É possível fazer alguma maneira que o retorno fique assim?
Obrigada!
"Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta."
Érica Tohoma | http://bloggirlsa.wordpress.com
Respostas
-
Bom dia,
Érica, experimente fazer um teste com o script abaixo:
IF OBJECT_ID('tempdb..#DIA') IS NOT NULL DROP TABLE #DIA IF OBJECT_ID('tempdb..#PROD') IS NOT NULL DROP TABLE #PROD SELECT 1 as dia, '2013-07-01' as data INTO #DIA UNION SELECT 2 as dia, '2013-07-02' as data UNION SELECT 3 as dia, '2013-07-03' as data UNION SELECT 4 as dia, '2013-07-04' as data UNION SELECT 5 as dia, '2013-07-05' as data -- SELECT * FROM #DIA --- SELECT 1 as dia, 'XPTO' as prod, 2 as qtd INTO #PROD UNION SELECT 2 as dia, 'XPTO' as prod, 5 as qtd UNION SELECT 2 as dia, 'BLA' as prod, 9 as qtd UNION SELECT 5 as dia, 'XPTO' as prod, 4 as qtd -- SELECT * FROM #PROD --- ;with CTE_P as ( select distinct prod from #PROD ) SELECT d.dia ,d.data ,c.prod ,p.qtd FROM #DIA d CROSS JOIN CTE_P as c LEFT JOIN #PROD p ON p.dia = d.dia and p.prod = c.prod order by c.prod, d.data
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta éricat quarta-feira, 3 de julho de 2013 15:08
Todas as Respostas
-
Erica, bom dia !
No campo dia voce poderia utilizar um isnull() pegando o datepart do dia do campo data, para a quantidade a mesma coisa um isnull() para zero, agora qual seria a logica para preencher o campo prod quando este for nulo ? se for baseado em dia uma que ja tem este produto um dia poderia ter mais de um produto ?
Quando a ordenação voce poderia colocar um order by prod, data.
Alexandre Matayosi Conde Mauricio.
- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 3 de julho de 2013 19:15
-
Oi Matayosi,
minha duvida mesmo são essas linhas em "vermelho" na imagem do excel que publiquei
e sim, 1 dia pode ter N produtos
a logica seria mais para o SSRS, que eu queria mostrar todas as datas, independente se o produto tenha sido vendido ou nao naquela data
"Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta."
Érica Tohoma | http://bloggirlsa.wordpress.com -
Bom dia,
Érica, experimente fazer um teste com o script abaixo:
IF OBJECT_ID('tempdb..#DIA') IS NOT NULL DROP TABLE #DIA IF OBJECT_ID('tempdb..#PROD') IS NOT NULL DROP TABLE #PROD SELECT 1 as dia, '2013-07-01' as data INTO #DIA UNION SELECT 2 as dia, '2013-07-02' as data UNION SELECT 3 as dia, '2013-07-03' as data UNION SELECT 4 as dia, '2013-07-04' as data UNION SELECT 5 as dia, '2013-07-05' as data -- SELECT * FROM #DIA --- SELECT 1 as dia, 'XPTO' as prod, 2 as qtd INTO #PROD UNION SELECT 2 as dia, 'XPTO' as prod, 5 as qtd UNION SELECT 2 as dia, 'BLA' as prod, 9 as qtd UNION SELECT 5 as dia, 'XPTO' as prod, 4 as qtd -- SELECT * FROM #PROD --- ;with CTE_P as ( select distinct prod from #PROD ) SELECT d.dia ,d.data ,c.prod ,p.qtd FROM #DIA d CROSS JOIN CTE_P as c LEFT JOIN #PROD p ON p.dia = d.dia and p.prod = c.prod order by c.prod, d.data
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta éricat quarta-feira, 3 de julho de 2013 15:08
-
Perfeito!
Era isso o que eu precisava
obrigada
"Se esta sugestão for útil, por favor, classifique-a como útil.
Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta."
Érica Tohoma | http://bloggirlsa.wordpress.com- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 3 de julho de 2013 19:16