• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

DeeSeven

Código SQL para criar relatório

3 mensagens neste tópico

Boa tarde,

estou com um problema em fazer o código sql para o SQL Server 2005 de uma base de dados que preciso fazer contas :P

Vou fazer desenho :eek:

        tabRegimes

|----------------------|

|*cod        |regime      |

|----------------------|

|    01      |  Regime1 |

|    02      |  Regime2 |

|    03      |  Regime3 |

|    04      |  Regime4 |

|    05      |  Regime5 |

|    06      |  Regime6 |

|    07      |  Regime7 |

|    08      |  Regime8 |

|----------------------|

        tabRequisicoes

|--------------------------------------------------------------|

|*id   |utilizador     |peq_almoco|almoco |jantar |ceia |

|--------------------------------------------------------------|

|    01 | José         |    05   |    01 |    04 |    05 |

|    02 | Manuel     |    04   |    02 |    06 |    03 |

|    03 | Joaquim   |    01   |    04 |    08 |    02 |

|    04 | Maria       |    03   |    07 |    08 |    03 |

|    05 | Filipa       |    01      |    04 |    07 |    06 |

|    06 | Paulo       |    07      |    06 |    05 |    07 |

|    07 | Fátima     |    04      |    05 |    04 |    05 |

|    08 | Luis         |    08      |    08 |    06 |    08 |

|    09 | Rita         |    04      |    03 |    02 |    04 |

|    10 | Patrícia      |    06      |    07 |    03 |    01 |

|    11 | Bruno     |    03      |    03 |    07 |    01 |

|    12 | Isabel     |    03      |    01 |    08 |    02 |

|    13 | Vitória     |    04      |    05 |    01 |    07 |

|    14 | César     |    05      |    01 |    02 |    03 |

|    15 | Sofia       |    06      |    02 |    03 |    08 |

|    16 | Duarte     |    07      |    07 |    04 |    02 |

|    17 | Carlos     |    07      |    06 |    06 |    01 |

|    18 | Nuno       |    01      |    05 |    07 |    07 |

|      ... |          ...    | ...     | ... |    ... |    ... |

|-------------------------------------------------------------|

Em cima estão como exemplo as duas tabelas onde preciso de ir buscar os dados. O resultado que preciso no relatório é o seguinte:

Relatório das Requisições

Código Regime Peq.Almoço Almoço Jantar Ceia

------------------------------------------------------------------------------------------------

01 Regime1   3     3       1     3

02 Regime2   0     2       2     3

03 Regime3   3     2       2     3

04 Regime4   4     2       3     1

05 Regime5   2     3       1     2

06 Regime6   2     2       3     1

07 Regime7   3     3       3     3

08 Regime8   1     1       3     2

Ou seja, preciso de ir listar todos os regimes à respectiva tabela e depois ir à tabela tabRequisicoes fazer a contagem dos regimes correspondentes.

No exemplo significa que:

  - para o Regime1 são precisos 3 pequenos almoços, 3 almoços, 1 jantar e 3 Ceias

  - para o Regime2 são precisos 0 pequenos almoços, 2 almoços, 2 jantar e 3 Ceias

  - para o Regime3 são precisos 3 pequenos almoços, 2 almoços, 2 jantar e 3 Ceias

  - para o Regime4 são precisos 4 pequenos almoços, 2 almoços, 3 jantar e 1 Ceias

..................... e assim por diante

Desculpem a complicação, se não me fiz entender digam :D

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso precisa de uns group bys, uns counts e uns joins.

Se puseres aqui os scripts (SQL Server) para gerar as tabelas e os dados, posso ajudar-te a fazer a query.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Moço só me registei por tua causa, tás.me a dever um jantar lol

há N Maneiras de fazer isso, mas com subquerys dá :)

Select A.cod, A.regime,

(Select Count(*) From tabRequisicoes Where peq_almoco=A.cod)  AS PequenosAlmocos,

(Select Count(*) From tabRequisicoes Where almoco=A.cod)        AS Almocos,

(Select Count(*) From tabRequisicoes Where jantar=A.cod)          AS Jantares,

(Select Count(*) From tabRequisicoes Where ceia=A.cod)            AS Ceias,

From tabRegimes AS A

Basa Skimmar ??? lol

Cyas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora