[quote=cfred]Não entendi o que você quer,
pelo visto seu banco não está normalizado, é isso?
[/quote]
Boa noite, obrigado pelo interesse.
Sim, o banco esta normalizado,
O problema é o seguinte.
Essa consulta fara parte de um Resumo Financeiro, onde apos ter sido montada uma carga de entrega, o sistema ira emitir 2 relatorio, o 1 é a um relatorio simples com os produtos aglutinados.
o 2 a qual essa sentença fara parte seria do Resumo financeiro, onde é necessario sair no relatorio o nome , data emissao, valor parcela ( se for parcelado), e o vencimento da parcela.
O sistema já trata esta data de vencimento, so que trata somente apos o pedido ser faturado, e no caso deste relatorio (necessidade do cliente) ele sai antes de ser faturado, porem o mesmo precisa destas datas de vencimento. e a tabela que traz a forma de pagamento, traz somente como “00,30,60, etc…”
dai a necessidade de desmembrar o campo, pois preciso saber qtos dias acrescentar a data de emissao para virar a data de vencimento (particularidades do cliente).
[code]CREATE FUNCTION Split
( @delimited nvarchar(max), @delimiter nvarchar(100)
) RETURNS @t TABLE
(
– Coluna Id pode ser comentada, não necessária para fazer o split na string
id int identity(1,1), – Eu usei esta coluna para numerar as partes ‘splitted’
val nvarchar(max)
)
AS
BEGIN
declare @xml xml
set @xml = N’’ + replace(@delimited,@delimiter,’’) + ‘’
insert into @t(val)
select
r.value(’.’,‘varchar(5)’) as item
from @xml.nodes(’//root/r’) as records®
RETURN
END
GO
SELECT * FROM dbo.Split(N’a,b,c,d,e’, ‘,’)[/code]
Adaptando de forma livre, supondo que FormasPgto é sua tabela principal e Prazos é uma tabela com todos os números de dias possíveis 30,60,90,00 etc… (essa acho que você terá que criar)
SELECT
FormasPgto.Descricao, Prazos.ndias
FROM FormasPgto
CROSS APPLY dbo.split(FormasPgto.Pagamento,',') split
INNER JOIN Prazos ON Prazos.ndias = split.val