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ódigoSELECT 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ódigoDECLARE @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