首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >翻译SQL语句时遇到问题

翻译SQL语句时遇到问题
EN

Stack Overflow用户
提问于 2012-05-29 21:41:22
回答 2查看 56关注 0票数 1

我正在尝试翻译SQL CASE语句,但遇到了一些问题,希望能得到帮助。以下是语句:

代码语言:javascript
运行
复制
,SUM(CASE WHEN [Gads].[GadsEventTypeCode] IN ('D1', 'D2', 'D3', 'DP', 'PD', 'DM', 'D4')
    THEN [Allocation].[AllocatedEnergyMwh] ELSE 0 END / 
    CAST([Unit].[NetDependableCapacity] AS FLOAT)) AS Hrs_Derate

这就是我想出来的,但是“迷失在翻译中”:

如果[Gads].[GadsEventTypeCode]等于'D1', 'D2', 'D3', 'DP', 'PD', 'DM', 'D4'

那么Hrs_Derate等于:

[Allocation].[AllocatedEnergyMwh] / [Unit].[NetDependableCapacity]

否则Hrs_Derate等于零。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-29 21:52:42

您需要翻译三个元素:

LINQ语句-这可以是System.Convert.,例如,(cond) ? trueval : falseval

  • IN子句-有
  1. .Contains运算符,它可以检查元素是否包含在数组中。
  2. 强制转换-我相信在System.Convert.

中可以通过相同的方法处理

  1. 运算符

有了这三条翻译规则,您将需要这样的东西(未经测试):

代码语言:javascript
运行
复制
var types = new [] { "D1", "D2", "D3", "DP", "PD", "DM", "D4" };

Hrs_Derate =
    ((types.Contains(gads.GadsEventTypeCode) ? allocation.AllocatedEnergyMwh : 0)
    / (Convert.ToFloat(unit.NetDependableCapacity))).Sum()
票数 1
EN

Stack Overflow用户

发布于 2012-05-29 22:20:55

你并不完全是这样的。

“如果Gads.GadsEventTypeCode 等于 'D1','D2','D3','DP','PD','DM','D4'”

这将检查GadsEventTypeCode是否为列出的任何值。

“则Hrs_Derate等于: Allocation.AllocatedEnergyMwh /Unit.NetDependableCapacity之和”

剩下的就到此为止了。关于ELSE 0的位导致它忽略不满足GadsEventTypeCode条件的行,即添加0不会影响SUMNULL也可以工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10800364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档