Array
(
)

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

Vinicius Montes
   - 24 ago 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?

Eduardo Gonçalves
   - 24 ago 2012

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":

#Código

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.

Vinicius Montes
   - 24 ago 2012

Eduardo o sql é o abaixo:
#Código

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?

Eduardo Gonçalves
   - 24 ago 2012

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.

Vinicius Montes
   - 24 ago 2012

Muito obrigado Eduardo pela atenção,

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

grato