Ajuda pra construir uma consulta

Pessoal, não estou conseguindo criar uma consulta um pouco diferente do comum, por isso peço a ajuda dos universitários!

Tenho uma tabela mysql com 3 campos:
Data (DATE)
Loja (INT 11)
Guia_Digitada (INT 1)

Preciso estabelecer um filtro inicial por período entre datas, digamos que no exemplo o usuário informe de 01/10/2012 a 31/10/2012. Este filtro também pode ser por mês/ano caso facilite. A ideia é que seja sempre mensal.

A consulta deve mostrar os dias do mês em colunas e as lojas em linhas
01|02|03|04|05…|31
Loja 1
Loja 2
Loja 3

A interseção entre loja e dia deve ‘pintar’ de cinza se o campo ‘Guia_Digitada’ for 1 ou deixar em branco se for 0.
Já vi um exemplo disso mas não lembro onde, é algo relacionado a cross-tab ou matriz, não sei ao certo.
Alguém pode me ajudar com isso?
Grato a todos!
Rodrigo

Ninguém arrisca um palpite?

http://www.scriptcase.com.br/sistemas/v5/exemplos_pt_br/grid29/grid29.php

Gráfico do tipo pivot.

instale o projeto de exemplos que já vem com sc.

Valeu Haroldo, vou dar uma olhada.
Obrigado.

eu ja fiz consultas dentros de consultas para obter um resultado parecido com o que voce quer, abaixo descrevo como deve ficar query e no scriptcase dependendo do valor da nota fiscal eu coloco um cor diferente

Se voce quiser posso enviar esse banco em postgresql para voce no seu email.

exemplo:
como deve fica a consulta:

 Pais                        Cliente                            Nota Fiscal                         Valor
  P1                            C1                                    NF1                                nnn.nnn,nn
  P1                            C1                                    NF2                                nnn.nnn,nn
  P1                            C1                                    Total Cliente                   nnn.nnn,nn
  P1                            C2                                    NF3                                nnn.nnn,nn
  P1                            C2                                    NF4                                nnn.nnn,nn
  P1                            C2                                    Total Cliente                   nnn.nnn,nn
  P1                           Total Pais                                                                 nnn.nnn,nn
  P2                            C3                                    NF5                                nnn.nnn,nn
  P2                            C3                                    NF6                                nnn.nnn,nn
  P2                            C3                                    Total Cliente                   nnn.nnn,nn
  P2                            C4                                    NF7                                nnn.nnn,nn
  P2                            C4                                    NF8                                nnn.nnn,nn
  P2                            C4                                   Total Cliente                    nnn.nnn,nn
  P2                            Total País                                                                nnn.nnn,nn
  Total Geral                                                                                              nnn.nnn,nn

sql para o problema acima

SELECT
tb_externa.pais_titulo AS “Pais”,
tb_externa.clie_nome AS “Cliente”,
tb_externa.nota_fiscal AS “Nota Fiscal”,
TRANSLATE (TO_CHAR (tb_externa.val, ‘999,999,999.99’), ‘,.’, ‘.,’)
AS “Valor”
FROM
(
(
SELECT
TO_CHAR (pais.pais_codigo, ‘9999’) AS pais_codigo,
pais.pais_titulo AS pais_titulo,
TO_CHAR (clie.clie_codigo, ‘999999’) AS clie_codigo,
clie.clie_nome AS clie_nome,
TO_CHAR (nofi.nofi_nota_fiscal, ‘999999’)
AS nota_fiscal,
SUM (item.item_qtd_produto * item.item_vlr_unitario)
AS val
FROM
sc_ads03_vendas_v1.pais pais,
sc_ads03_vendas_v1.cliente clie,
sc_ads03_vendas_v1.nota_fiscal nofi,
sc_ads03_vendas_v1.item_nota_fiscal item
WHERE
pais.pais_codigo = clie.pais_codigo
AND clie.clie_codigo = nofi.clie_codigo
AND nofi.nofi_nota_fiscal = item.nofi_nota_fiscal
GROUP BY
pais.pais_codigo,
pais.pais_titulo,
clie.clie_codigo,
clie.clie_nome,
nofi.nofi_nota_fiscal
)
UNION ALL
(
SELECT
TO_CHAR (pais.pais_codigo, ‘9999’) AS pais_codigo,
pais.pais_titulo AS pais_titulo,
TO_CHAR (clie.clie_codigo, ‘999999’) AS clie_codigo,
clie.clie_nome AS clie_nome,
‘Total do Cliente’ AS nota_fiscal,
SUM (item.item_qtd_produto * item.item_vlr_unitario)
AS val
FROM
sc_ads03_vendas_v1.pais pais,
sc_ads03_vendas_v1.cliente clie,
sc_ads03_vendas_v1.nota_fiscal nofi,
sc_ads03_vendas_v1.item_nota_fiscal item
WHERE
pais.pais_codigo = clie.pais_codigo
AND clie.clie_codigo = nofi.clie_codigo
AND nofi.nofi_nota_fiscal = item.nofi_nota_fiscal
GROUP BY
pais.pais_codigo,
pais.pais_titulo,
clie.clie_codigo,
clie.clie_nome

		)
		UNION ALL

(
SELECT
TO_CHAR (pais.pais_codigo, ‘9999’) AS pais_codigo,
pais.pais_titulo AS pais_titulo,
‘999999’ AS clie_codigo,
‘Total do País’ AS clie_nome,
’ ’ AS nota_fiscal,
SUM (item.item_qtd_produto * item.item_vlr_unitario)
AS val
FROM
sc_ads03_vendas_v1.pais pais,
sc_ads03_vendas_v1.cliente clie,
sc_ads03_vendas_v1.nota_fiscal nofi,
sc_ads03_vendas_v1.item_nota_fiscal item
WHERE
pais.pais_codigo = clie.pais_codigo
AND clie.clie_codigo = nofi.clie_codigo
AND nofi.nofi_nota_fiscal = item.nofi_nota_fiscal
GROUP BY
pais.pais_codigo,
pais.pais_titulo
)
UNION ALL
(
SELECT
‘9999’ AS pais_codigo,
‘Total Geral’ AS pais_titulo,
‘999999’ AS clie_codigo,
’ ’ AS clie_nome,
’ ’ AS nota_fiscal,
SUM (item.item_qtd_produto * item.item_vlr_unitario)
AS val
FROM
sc_ads03_vendas_v1.pais pais,
sc_ads03_vendas_v1.cliente clie,
sc_ads03_vendas_v1.nota_fiscal nofi,
sc_ads03_vendas_v1.item_nota_fiscal item
WHERE
pais.pais_codigo = clie.pais_codigo
AND clie.clie_codigo = nofi.clie_codigo
AND nofi.nofi_nota_fiscal = item.nofi_nota_fiscal
)
) tb_externa
ORDER BY
tb_externa.pais_codigo,
tb_externa.clie_codigo,
tb_externa.nota_fiscal

Att Arquimedes

Arquimedes, obrigado pela dica, mas acabe resolvendo com um pouco de codificação e algumas queries em sequencia. Preferi não esquentar muito a cabeça com tsql.

Agora, esse código seu é digno de estudo, parabéns!
Rodrigo

Olá rrma.
Se for possível daria para você publicar como foi resolvido?

Obrigado