como nomear uma coluna através de uma variável

24/08/2012

Bom dia a todos,

tenho a seguinte situação: o usuário informa um período entre data, de data1 ate data2, e para cada 15 dias dentro dessas datas tenho que criar uma coluna, até ai tudo bem, o detalhe é que o nome da coluna deve ser deve ser variável. Se muda os filtros, muda se o nome da coluna.

como fazer isso?



Vinicius Montes

Respostas

24/08/2012

Eduardo Gonçalves

Mas você está trabalhando com que linguagem? Para dar um apelido a uma coluna, basta colocar um nome ao lado da informação que você está recuperando. No exemplo abaixo, dou o nome de "contagem":


SELECT COUNT(*) AS CONTAGEM FROM TABELA


Dependendo da linguagem em que você está trabalhando, esse "contagem" pode ser substituído pelo conteúdo de uma variável na string SQL que você está montando.
Responder Citar

24/08/2012

Vinicius Montes

Eduardo o sql é o abaixo:
DECLARE @intervalo INTEGER
DECLARE @ini       DATETIME
DECLARE @fim       DATETIME
DECLARE @data      DATETIME
DECLARE @data1     DATETIME
DECLARE @data2     DATETIME
DECLARE @data3     DATETIME
DECLARE @data4     DATETIME
DECLARE @data5     DATETIME
DECLARE @data6     DATETIME
DECLARE @data7     DATETIME
DECLARE @data8     DATETIME
DECLARE @data9     DATETIME
DECLARE @data10    DATETIME
DECLARE @data11    DATETIME
DECLARE @data12    DATETIME
DECLARE @data13    DATETIME
DECLARE @data14    DATETIME
DECLARE @data15    DATETIME
DECLARE @data16    DATETIME
DECLARE @data17    DATETIME
DECLARE @data18    DATETIME
DECLARE @data19    DATETIME
DECLARE @data20    DATETIME
DECLARE @data21    DATETIME
DECLARE @data22    DATETIME
DECLARE @data23    DATETIME
DECLARE @data24    DATETIME
DECLARE @data25    DATETIME
DECLARE @data26    DATETIME
DECLARE @data27    DATETIME
DECLARE @data28    DATETIME
DECLARE @data29    DATETIME
DECLARE @data30    DATETIME

SET @intervalo = 1
SET @ini = '2012-07-01'
SET @fim = '2012-07-31'

SET @data = @ini

SET @data1 = (SELECT DATEADD(day, @intervalo,@data))

IF @data1 > @fim
  BEGIN
  SET @data1 = '1900-01-01'
  END

SET @data2 = (SELECT DATEADD(day, @intervalo,@data1))

IF @data2 > @fim
  BEGIN
  SET @data2 = '1900-01-01'
  END

SET @data3 = (SELECT DATEADD(day, @intervalo,@data2))
IF @data3 > @fim
  BEGIN
  SET @data3 = '1900-01-01'
  END

SET @data4 = (SELECT DATEADD(day, @intervalo,@data3))
IF @data4 > @fim
  BEGIN
  SET @data4 = '1900-01-01'
  END
  
SET @data5 = (SELECT DATEADD(day, @intervalo,@data4))
IF @data5 > @fim
  BEGIN
  SET @data5 = '1900-01-01'
  END

SET @data6 = (SELECT DATEADD(day, @intervalo,@data5))
IF @data6 > @fim
  BEGIN
  SET @data6 = '1900-01-01'
  END
  
SET @data7 = (SELECT DATEADD(day, @intervalo,@data6))
IF @data7 > @fim
  BEGIN
  SET @data7 = '1900-01-01'
  END
  
SET @data8 = (SELECT DATEADD(day, @intervalo,@data7))
IF @data8 > @fim
  BEGIN
  SET @data8 = '1900-01-01'
  END

SET @data9 = (SELECT DATEADD(day, @intervalo,@data8))
IF @data9 > @fim
  BEGIN
  SET @data9 = '1900-01-01'
  END    
  
SET @data10 = (SELECT DATEADD(day, @intervalo,@data9))
IF @data10 > @fim
  BEGIN
  SET @data10 = '1900-01-01'
  END    

SET @data11 = (SELECT DATEADD(day, @intervalo,@data10))
IF @data11 > @fim
  BEGIN
  SET @data11 = '1900-01-01'
  END    
  
SET @data12 = (SELECT DATEADD(day, @intervalo,@data11))
IF @data12 > @fim
  BEGIN
  SET @data12 = '1900-01-01'
  END    
  
SET @data13 = (SELECT DATEADD(day, @intervalo,@data12))
IF @data13 > @fim
  BEGIN
  SET @data13 = '1900-01-01'
  END    

SET @data14 = (SELECT DATEADD(day, @intervalo,@data13))
IF @data14 > @fim
  BEGIN
  SET @data14 = '1900-01-01'
  END    

SET @data15 = (SELECT DATEADD(day, @intervalo,@data14))
IF @data15 > @fim
  BEGIN
  SET @data15 = '1900-01-01'
  END      
  
SET @data16 = (SELECT DATEADD(day, @intervalo,@data15))
IF @data16 > @fim
  BEGIN
  SET @data16 = '1900-01-01'
  END    
  
SET @data17 = (SELECT DATEADD(day, @intervalo,@data16))
IF @data17 > @fim
  BEGIN
  SET @data17 = '1900-01-01'
  END    
  
SET @data18 = (SELECT DATEADD(day, @intervalo,@data17))
IF @data18 > @fim
  BEGIN
  SET @data18 = '1900-01-01'
  END    
  
SET @data19 = (SELECT DATEADD(day, @intervalo,@data18))
IF @data19 > @fim
  BEGIN
  SET @data19 = '1900-01-01'
  END    

SET @data20 = (SELECT DATEADD(day, @intervalo,@data19))
IF @data20 > @fim
  BEGIN
  SET @data20 = '1900-01-01'
  END    
  
SET @data21 = (SELECT DATEADD(day, @intervalo,@data20))
IF @data21 > @fim
  BEGIN
  SET @data21 = '1900-01-01'
  END    
  
SET @data22 = (SELECT DATEADD(day, @intervalo,@data21))
IF @data22 > @fim
  BEGIN
  SET @data22 = '1900-01-01'
  END    
  
SET @data23 = (SELECT DATEADD(day, @intervalo,@data22))
IF @data23 > @fim
  BEGIN
  SET @data23 = '1900-01-01'
  END    
  
SET @data24 = (SELECT DATEADD(day, @intervalo,@data23))
IF @data24 > @fim
  BEGIN
  SET @data24 = '1900-01-01'
  END    

SET @data25 = (SELECT DATEADD(day, @intervalo,@data24))
IF @data25 > @fim
  BEGIN
  SET @data25 = '1900-01-01'
  END    
  
SET @data26 = (SELECT DATEADD(day, @intervalo,@data25))
IF @data26 > @fim
  BEGIN
  SET @data26 = '1900-01-01'
  END    
  
SET @data27 = (SELECT DATEADD(day, @intervalo,@data26))
IF @data27 > @fim
  BEGIN
  SET @data27 = '1900-01-01'
  END    
  
SET @data28 = (SELECT DATEADD(day, @intervalo,@data27))
IF @data28 > @fim
  BEGIN
  SET @data28 = '1900-01-01'
  END    
  
SET @data29 = (SELECT DATEADD(day, @intervalo,@data28))
IF @data29 > @fim
  BEGIN
  SET @data29 = '1900-01-01'
  END  

SET @data30 = (SELECT DATEADD(day, @intervalo,@data29))
IF @data30 > @fim
  BEGIN
  SET @data30 = '1900-01-01'
  END    
  
SELECT    pr.procodigo,
          pr.prodescricao,
          CASE WHEN fx1.qtd IS NOT NULL THEN fx1.qtd ELSE 0 END AS Faixa_1,
          CASE WHEN fx2.qtd IS NOT NULL THEN fx2.qtd ELSE 0 END AS Faixa_2,
          CASE WHEN fx3.qtd IS NOT NULL THEN fx3.qtd ELSE 0 END AS Faixa_3,
          CASE WHEN fx4.qtd IS NOT NULL THEN fx4.qtd ELSE 0 END AS Faixa_4,
          CASE WHEN fx5.qtd IS NOT NULL THEN fx5.qtd ELSE 0 END AS Faixa_5,
          CASE WHEN fx6.qtd IS NOT NULL THEN fx6.qtd ELSE 0 END AS Faixa_6,
          CASE WHEN fx7.qtd IS NOT NULL THEN fx7.qtd ELSE 0 END AS Faixa_7,
          CASE WHEN fx8.qtd IS NOT NULL THEN fx8.qtd ELSE 0 END AS Faixa_8,
          CASE WHEN fx9.qtd IS NOT NULL THEN fx9.qtd ELSE 0 END AS Faixa_9,
          CASE WHEN fx10.qtd IS NOT NULL THEN fx10.qtd ELSE 0 END AS Faixa_10,
          CASE WHEN fx11.qtd IS NOT NULL THEN fx11.qtd ELSE 0 END AS Faixa_11,
          CASE WHEN fx12.qtd IS NOT NULL THEN fx12.qtd ELSE 0 END AS Faixa_12,
          CASE WHEN fx13.qtd IS NOT NULL THEN fx13.qtd ELSE 0 END AS Faixa_13,
          CASE WHEN fx14.qtd IS NOT NULL THEN fx14.qtd ELSE 0 END AS Faixa_14,
          CASE WHEN fx15.qtd IS NOT NULL THEN fx15.qtd ELSE 0 END AS Faixa_15,
          CASE WHEN fx16.qtd IS NOT NULL THEN fx16.qtd ELSE 0 END AS Faixa_16,
          CASE WHEN fx17.qtd IS NOT NULL THEN fx17.qtd ELSE 0 END AS Faixa_17,
          CASE WHEN fx18.qtd IS NOT NULL THEN fx18.qtd ELSE 0 END AS Faixa_18,
          CASE WHEN fx19.qtd IS NOT NULL THEN fx19.qtd ELSE 0 END AS Faixa_19,
          CASE WHEN fx20.qtd IS NOT NULL THEN fx20.qtd ELSE 0 END AS Faixa_20,
          CASE WHEN fx21.qtd IS NOT NULL THEN fx21.qtd ELSE 0 END AS Faixa_21,
          CASE WHEN fx22.qtd IS NOT NULL THEN fx22.qtd ELSE 0 END AS Faixa_22,
          CASE WHEN fx23.qtd IS NOT NULL THEN fx23.qtd ELSE 0 END AS Faixa_23,
          CASE WHEN fx24.qtd IS NOT NULL THEN fx24.qtd ELSE 0 END AS Faixa_24,
          CASE WHEN fx25.qtd IS NOT NULL THEN fx25.qtd ELSE 0 END AS Faixa_25,
          CASE WHEN fx26.qtd IS NOT NULL THEN fx26.qtd ELSE 0 END AS Faixa_26,
          CASE WHEN fx27.qtd IS NOT NULL THEN fx27.qtd ELSE 0 END AS Faixa_27,
          CASE WHEN fx28.qtd IS NOT NULL THEN fx28.qtd ELSE 0 END AS Faixa_28,
          CASE WHEN fx29.qtd IS NOT NULL THEN fx29.qtd ELSE 0 END AS Faixa_29,
          CASE WHEN fx30.qtd IS NOT NULL THEN fx30.qtd ELSE 0 END AS Faixa_30
FROM      produtos pr
LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @ini 
          AND      mo.mprdtemissao <  @data1
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx1
ON pr.prorecnum = fx1.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data1
          AND      mo.mprdtemissao <  @data2
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx2
ON pr.prorecnum = fx2.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data2
          AND      mo.mprdtemissao <  @data3
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx3
ON pr.prorecnum = fx3.prod
 
LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data3
          AND      mo.mprdtemissao <  @data4
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx4
ON pr.prorecnum = fx4.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data4
          AND      mo.mprdtemissao <  @data5
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx5
ON pr.prorecnum = fx5.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data5
          AND      mo.mprdtemissao <  @data6
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx6
ON pr.prorecnum = fx6.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data6
          AND      mo.mprdtemissao <  @data7
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx7
ON pr.prorecnum = fx7.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data7
          AND      mo.mprdtemissao <  @data8
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx8
ON pr.prorecnum = fx8.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data8
          AND      mo.mprdtemissao <  @data9
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx9
ON pr.prorecnum = fx9.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data9
          AND      mo.mprdtemissao <  @data10
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx10
ON pr.prorecnum = fx10.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data10
          AND      mo.mprdtemissao <  @data11
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx11
ON pr.prorecnum = fx11.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data11
          AND      mo.mprdtemissao <  @data12
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx12
ON pr.prorecnum = fx12.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data12
          AND      mo.mprdtemissao <  @data13
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx13
ON pr.prorecnum = fx13.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data13
          AND      mo.mprdtemissao <  @data14
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx14
ON pr.prorecnum = fx14.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data14
          AND      mo.mprdtemissao <  @data15
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx15
ON pr.prorecnum = fx15.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data15
          AND      mo.mprdtemissao <  @data16
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx16
ON pr.prorecnum = fx16.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data16
          AND      mo.mprdtemissao <  @data17
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx17
ON pr.prorecnum = fx17.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data17
          AND      mo.mprdtemissao <  @data18
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx18
ON pr.prorecnum = fx18.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data18
          AND      mo.mprdtemissao <  @data19
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx19
ON pr.prorecnum = fx19.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data19
          AND      mo.mprdtemissao <  @data20
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx20
ON pr.prorecnum = fx20.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data20
          AND      mo.mprdtemissao <  @data21
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx21
ON pr.prorecnum = fx21.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data21
          AND      mo.mprdtemissao <  @data22
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx22
ON pr.prorecnum = fx22.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data22
          AND      mo.mprdtemissao <  @data23
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx23
ON pr.prorecnum = fx23.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data23
          AND      mo.mprdtemissao <  @data24
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx24
ON pr.prorecnum = fx24.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data24
          AND      mo.mprdtemissao <  @data25
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx25
ON pr.prorecnum = fx25.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data25
          AND      mo.mprdtemissao <  @data26
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx26
ON pr.prorecnum = fx26.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data26
          AND      mo.mprdtemissao <  @data27
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx27
ON pr.prorecnum = fx27.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data27
          AND      mo.mprdtemissao <  @data28
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx28
ON pr.prorecnum = fx28.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data28
          AND      mo.mprdtemissao <  @data29
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx29
ON pr.prorecnum = fx29.prod

LEFT JOIN
          (
          SELECT   p.prorecnum AS prod,
                   sum(it.impqtde) qtd
          FROM     movimentacoesprodutos mo,
                   itensmovimentacoesprodutos it,
                   produtos p
          WHERE    mo.mprrecnum = it.mprrecnum
          AND      it.prorecnum = p.prorecnum
          AND      mo.mprdtemissao >= @data29
          AND      mo.mprdtemissao <=  @data30
          AND      mo.tescodigo IN (6,56)
          AND      mo.emicodigoespecifico = 51
          AND      p.famcodigo = 197
          GROUP BY p.prorecnum
          ) AS fx30
ON pr.prorecnum = fx30.prod

WHERE     pr.famcodigo = 197
ORDER BY  PR.procodigo


Detalhe o nome das colunas é faixa1,faixa2,...Eu gostaria que o nome fosse: @data1, @data2.... ou seja o conteúdo da variável @data

entendeu minha dificuldade?
Responder Citar

24/08/2012

Eduardo Gonçalves

Acho que não poderei ajudar muito então, pois o exemplo é grande e não conheço bem Transact-SQL. Achei que você tinha um front end que montava sua query e passava pro SQL Server, por isso que fiz o comentário do outro post.
Responder Citar

24/08/2012

Vinicius Montes

Muito obrigado Eduardo pela atenção,

esse sql será executado por uma aplicação do iReport.

grato
Responder Citar