использовать аналитическую функцию lag()
для получения разности двух строк и случая, когда для получения оригинального значения столбца заказа, где нет разницы
with cte as
(
select 1 as id, 56 as sclid, '2018-01-01' as s_date, 10 as orders
union all
select 1,56,'2018-05-05',24 union all
select 1,56,'2018-07-07',35 union all
select 1,103,'2019-04-04',26 union all
select 1,103,'2019-03-03',19
) select t.*,
case when ( lag([orders])over(partition by id,sclid order by s_date ) -[orders] )
is null then [orders] else
( lag([orders])over(partition by id,sclid order by s_date ) -[orders] )*(-1) end
as diff
from cte t
выход
id sclid s_date orders diff
1 56 2018-01-01 10 10
1 56 2018-05-05 24 14
1 56 2018-07-07 35 11
1 103 2019-03-03 19 19
1 103 2019-04-04 26 7
Это похоже на ошибку. На http://www.vistax64.com/powershell/62805-out-file-force-doesnt-seem-work-advertised.html эта проблема была уже зарегистрирована на MS Connect.
Как упомянуто Micheal, это похоже на ошибку (или ложная реклама!).
Править: Я первоначально думал, что">" оператор работал, но я сделал ошибку в своем тесте. Это не делает, как можно было бы ожидать. Однако можно попытаться использовать новый объект вместо этого:
new-item -force -path $path -value "bar" -type file
Не точно то же, но можно создать простую функцию, чтобы сделать то, что Вы хотите:
function Out-FileForce {
PARAM($path)
PROCESS
{
if(Test-Path $path)
{
Out-File -inputObject $_ -append -filepath $path
}
else
{
new-item -force -path $path -value $_ -type file
}
}
}