У меня есть нижний запрос, который отлично работает в 2012 году, поскольку он использует функции 2012 года. Может ли кто-нибудь выполнить ту же самую работу запроса в 2008 году с тем же результатом? Я хочу получить данные заполнения ковша из таблицы Filler в таблицу Bucket. Я получаю сообщение об ошибке при запуске его в SQL 2008. The Parallel Data Warehouse (PDW) features are not enabled
Преобразование SQL Server 2012 CTE в SQL Server 2008
declare @Buckets table (ID char(2), FullCapacity int)
declare @Filler table (ID char(2), Filler int)
insert into @Buckets values
('B1', 100),
('B2', 50),
('B3', 70)
insert into @Filler values
('F1', 90),
('F2', 70),
('F3', 40),
('F4', 20)
;with fillerCte as
(
select
ID,
Filler,
sum(Filler) over (order by ID) as TotalFill
from @Filler
),
BucketCte as
(
select
ID,
FullCapacity,
sum(FullCapacity) over (order by ID) - FullCapacity as RunningTotalCapacity
from @Buckets
)
select
b.ID,
b.FullCapacity,
case
when f.TotalFill < b.RunningTotalCapacity then 0
when f.TotalFill > b.RunningTotalCapacity + b.FullCapacity then b.FullCapacity
else f.TotalFill - b.RunningTotalCapacity
end as CurrentAmount
from fillerCte as f
cross join BucketCte as b
order by f.ID, b.ID
Выходная таблица должна иметь ниже показывает процесс заполнения.
ID | FullCapacity | CurrentAmount
---+--------------+--------------
B1 | 100 | 90
B2 | 50 | 0
B3 | 70 | 0
---+--------------+--------------
B1 | 100 | 100
B2 | 50 | 50
B3 | 70 | 10
---+--------------+--------------
B1 | 100 | 100
B2 | 50 | 50
B3 | 70 | 50
---+--------------+--------------
B1 | 100 | 100
B2 | 50 | 50
B3 | 70 | 70
Я получаю ошибку ниже при выполнении ее в SQL 2008. Функции Parallel Data Warehouse (PDW) не включены. – user2123852
Единственное, что я вижу, что в версии 2008 не поддерживается, - это общая сумма. Здесь, в SO, вы можете найти множество примеров того, как реализовать общее количество в SQL Server без использования оконной функции. –
Пожалуйста, отредактируйте свой вопрос, чтобы добавить информацию - он будет более четким, чем публикация комментариев. – Filburt