ferreira12 Posted June 11, 2013 at 01:13 PM Report #512021 Posted June 11, 2013 at 01:13 PM Boas, Eu tenho um função que devolve x informação em determinadas datas, então que gostaria que essas datas aparecem no seguinte formato. loja artigosHoje DataHoje artigosOntem DataOntem aa 2 11-06-2013 5 10-06-2013 bb 4 11-06-20013 2 10-06-2013 neste momento tenho o resultado a devolver da seguinte maneira loja artigosHoje DataHoje aa 2 11-06-2013 bb 4 11-06-2013 aa 5 10-06-2013 bb 2 10-06-2013 a query utilizada é SELECT Loja, artigos as ArtigosHoje, Data as DataHoje FROM dbo.fnLoja('11-06-2013','11-06-2013') union SELECT Loja, artigos as ArtigosOntem, Data as DataOntem FROM dbo.fnLoja('10-06-2013','10-06-2013')
AntonioMateus Posted June 11, 2013 at 10:47 PM Report #512170 Posted June 11, 2013 at 10:47 PM (edited) Vê se assim ajuda: SELECT Lojas.Loja as Loja, vendasHoje.artigos as ArtigosHoje, vendasHoje.Data as DataHoje, vendasOntem.artigos as ArtigosOntem, vendasOntem.Data as DataOntem FROM dbo.TabelaDeLojas as Lojas left join ( SELECT Loja, artigos as ArtigosOntem, Data as DataOntem FROM dbo.fnLoja('10-06-2013','10-06-2013') ) vendasOntem on Lojas.Loja = vendasOntem.Loja Left join ( SELECT Loja, artigos as ArtigosHoje, Data as DataHoje FROM dbo.fnLoja('11-06-2013','11-06-2013') ) vendasHoje on Lojas.Loja = vendasHoje.Loja where vendasOntem.Loja is not null or vendasHoje.Loja is not null Edited June 11, 2013 at 10:52 PM by AntonioMateus
ferreira12 Posted June 12, 2013 at 04:51 PM Author Report #512435 Posted June 12, 2013 at 04:51 PM Boas, Eu estou a usar estas query no Reporting Services. No SQL Server, o resultado que me é devolvido está correcto. Mas quando tento criar o DataSets no reporting services, dá o seguinte erro "could not create a list of fields for the query. verify that you can connect to the data source and that your query syntax is correct an item with the same key has already been added"
ferreira12 Posted June 12, 2013 at 10:02 PM Author Report #512474 Posted June 12, 2013 at 10:02 PM Problema Resolvido...
ferreira12 Posted June 13, 2013 at 02:57 PM Author Report #512673 Posted June 13, 2013 at 02:57 PM Novo problema... pois aumentei uma pouco mais a query SELECT Lojas.Loja AS Loja, vendasHoje.artigos AS ArtigosHoje, vendasHoje.DATA AS DataHoje, vendasOntem.artigos AS ArtigosOntem, vendasOntem.DATA AS DataOntem FROM dbo.TabelaDeLojas AS Lojas LEFT JOIN ( SELECT Loja, artigos AS ArtigosOntem, DATA AS DataOntem,Floor(((Artigos/(SELECT Artigos FROM dbo.fnLoja('06-13-2012 ','06-13-2012 ')))*100)-100) as MaisMenos FROM dbo.fnLoja('10-06-2013','10-06-2013') ) vendasOntem ON Lojas.Loja = vendasOntem.Loja LEFT JOIN ( SELECT Loja, artigos AS ArtigosHoje, DATA AS DataHoje, Floor(((Artigos/(SELECT Artigos FROM dbo.fnLoja('06-13-2012 ','06-13-2012 ')))*100)-100) as MaisMenos FROM dbo.fnLoja('11-06-2013','11-06-2013') ) vendasHoje ON Lojas.Loja = vendasHoje.Loja WHERE vendasOntem.Loja IS NOT NULL OR vendasHoje.Loja IS NOT NULL Estou a tentar realizar uma SubQuery... O que é que eu pretendo com essa query o valor do artigo de hoje a dividir com o artigo do mesmo dia do ano anterior, Mas eu o seguinte erro "Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression." Colocando o select top 1, o erro desaparece, mas o valor do ano anterior é sempre o mesmo, como faço para o artigo fique associado a uma loja?
xBoShY Posted June 13, 2013 at 08:20 PM Report #512753 Posted June 13, 2013 at 08:20 PM SELECT Lojas.Loja AS Loja, vendasHoje.artigos AS ArtigosHoje, vendasHoje.DATA AS DataHoje, Floor(((COALESCE(ISNULL(vendasOntem.artigos, 0)/NULLIF(vendasOntemAnoAnterior.artigos, 0), 0))*100)-100) AS Hoje_AnoAnterior vendasOntem.artigos AS ArtigosOntem, vendasOntem.DATA AS DataOntem, Floor(((COALESCE(ISNULL(vendasOntem.artigos, 0)/NULLIF(vendasOntemAnoAnterior.artigos, 0), 0))*100)-100) AS Ontem_AnoAnterior FROM dbo.TabelaDeLojas AS Lojas LEFT JOIN ( SELECT Loja, artigos, DATA FROM dbo.fnLoja(DATEADD(day, -1, cast(CURRENT_TIMESTAMP AS date)),DATEADD(day, -1, cast(CURRENT_TIMESTAMP AS date)))) AS vendasOntem ON Lojas.Loja = vendasOntem.Loja LEFT JOIN ( SELECT Loja, artigos, DATA FROM dbo.fnLoja(cast(CURRENT_TIMESTAMP AS date),cast(CURRENT_TIMESTAMP AS date))) AS vendasHoje ON Lojas.Loja = vendasHoje.Loja LEFT JOIN ( SELECT Loja, artigos FROM dbo.fnLoja(DATEADD(year, -1, cast(CURRENT_TIMESTAMP AS date)),DATEADD(year, -1, cast(CURRENT_TIMESTAMP AS date)))) AS vendasHojeAnoAnterior ON Lojas.Loja = vendasHojeAnoAnterior.Loja LEFT JOIN ( SELECT Loja, artigos FROM dbo.fnLoja(DATEADD(year, -1, DATEADD(day, -1, cast(CURRENT_TIMESTAMP AS date))),DATEADD(year, -1, DATEADD(day, -1, cast(CURRENT_TIMESTAMP AS date))))) AS vendasOntemAnoAnterior ON Lojas.Loja = vendasOntemAnoAnterior.Loja WHERE vendasOntem.Loja IS NOT NULL OR vendasHoje.Loja IS NOT NULL
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now