Desejo criar uma tabela ou exibição no SSMS que deve ter uma coluna chamada qoh . Nessa coluna deve ser calculada a soma dos valores da coluna rel_qty . ou seja
- O primeiro dado de qoh é o mesmo do valor da primeira linha de rel_qty .
- O segundo valor de qoh deve ser a soma do valor da primeira e da segunda linha de rel_qty .
- O terceiro valor de qoh deve ser a soma do valor da primeira, segunda e terceira linhas de rel_qty .
existe alguma possibilidade de fazer isso?
Aqui está a minha consulta. mas esta consulta satisfez apenas a primeira e a segunda linhas, não mais que isso,
SELECT a.id, a.tot_qty, a.rel_qty,
(a.tot_qty -
COALESCE (a.rel_qty +
(SELECT b.rel_qty
FROM dbo.foo AS b
WHERE (b.id = a.id - 1)),
a.rel_qty)
) AS qoh
FROM dbo.foo AS a
ORDER BY a.id
E se meu id pular um valor, esta consulta falhou ao fazer o cálculo. Como posso consertar isso?
aqui está a captura de tela do meu resultado
Parece que você precisa de um total corrente.
Se
tot_qty
for o mesmo em todas as linhas, você pode usarROWS UNBOUNDED PRECEDING
é a versão abreviada deROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
.Essa opção de moldura de janela significa que, para cada linha, o
SUM
incluirá a si mesmo e a todos os predecessores conforme ordenado porid
.A
ROWS
opção é potencialmente importante para a eficiência, conforme descrito em Melhores abordagens para executar totais – atualizado para SQL Server 2012