gpt4 book ai didi

sql - 并行数据仓库(PDW)功能未启用

转载 作者:行者123 更新时间:2023-12-03 00:13:55 25 4
gpt4 key购买 nike

我有一个 WinForms 客户端应用程序,它使用参数执行以下 SQL 语句。

SELECT a.CaseNo, (c.Claimant + ' -v- ' + c.Defendant) AS CaseName, 
a.Allocation - ISNULL(LAG(a.Allocation)
OVER (PARTITION BY a.CaseNo, a.FeeEarner ORDER BY a.AllocID), 0) AS Billing, a.AllocID
FROM tblAllocations AS a INNER JOIN tblCases AS c ON a.CaseNo = c.CaseNo
WHERE a.CaseNo > 0 AND FeeEarner = @FeeEarner
AND a.Date >= @StartDate
AND a.Date <= @EndDate ORDER BY a.Date;

当我在进行开发工作的笔记本电脑上运行此命令时,查询执行没有任何问题。返回的信息用于填充客户端应用程序内的数据网格。我正在使用 SQL Server 2012 Express。

但是,当在我的客户场所运行完全相同的客户端应用程序时,代码会返回错误。大部分错误消息是由我的应用程序生成的,这使我能够查明代码中出现问题的位置。但是,在附加系统生成的错误的消息末尾,我得到以下内容:

The parallel data warehouse (PDW) features are not enabled

我以前从未见过此消息,因此无法确定问题所在。我尝试用 Google 搜索此错误消息,但没有找到任何有用的信息。我的客户正在使用 SQL Server 2008 R2 Express。

PDW 是 SQL Express 2012 中的一项功能,但 2008 R2 版本中没有吗?

我的查询需要 PDW 的原因是什么?

是否使用了 PARTITION,因为这是一个我之前没有使用过的关键字,直到这个查询导致了问题?

在不让客户更改 SQL 版本的情况下,有什么方法可以解决这个问题,例如通过更改我的 SQL 查询或启用 SQL 中的某些内容?

任何帮助将不胜感激。

最佳答案

命令LAG仅在 SQL Server 2012 中受支持。

尽管如果这就是问题所在,我对错误感到惊讶。

--编辑--

要在不使用 LAG 的情况下复制查询:

这基本上已经从 article 中取消了。我提到过;

SELECT 
a.CaseNo,
(c.Claimant + ' -v- ' + c.Defendant) AS CaseName,
a.Allocation - ISNULL((
CASE
WHEN N%2=1
THEN MAX(CASE
WHEN N%2=0
THEN a.Allocation
END)
OVER (Partition BY N/2)
ELSE MAX(CASE
WHEN N%2=1
THEN a.Allocation
END)
OVER (Partition BY (N+1)/2)
END
), 0) AS Billing,
a.AllocID
FROM tblAllocations AS a
LEFT JOIN (SELECT
Row_Number() OVER(ORDER BY b.Id) N,
b.Id
FROM tblAllocations as b) AS RowNum
ON RowNum.id=a.id
INNER JOIN tblCases AS c
ON a.CaseNo = c.CaseNo
WHERE a.CaseNo > 0
AND FeeEarner = @FeeEarner
AND a.Date >= @StartDate
AND a.Date <= @EndDate
ORDER BY a.Date;

这在下面进行了演示:

SQL FIDDLE

关于sql - 并行数据仓库(PDW)功能未启用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14752480/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com