首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ISNULL语法挑战

ISNULL语法挑战
EN

Stack Overflow用户
提问于 2016-04-06 19:20:49
回答 3查看 1.9K关注 0票数 1

我似乎找不出这里的语法问题。

这是可行的,但却是空的;

代码语言:javascript
复制
SELECT jo.Job_Operation, jo.Job, jo.Work_Center, jo.Operation_Service, jo.Est_Total_Hrs,
    (SELECT SUM(jot.Act_Run_Hrs)
    FROM PRODUCTION.dbo.Job_Operation_Time jot
    WHERE jot.Job_Operation = jo.Job_Operation) AS Cost
FROM PRODUCTION.dbo.Job_Operation jo
WHERE jo.Job = 'A5076027'

所以我试图在这里使用ISNULL,但是我得到了一个错误:

代码语言:javascript
复制
SELECT jo.Job_Operation, jo.Job, jo.Work_Center, jo.Operation_Service, jo.Est_Total_Hrs,
    (ISNULL(SELECT SUM(jot.Act_Run_Hrs)
    FROM PRODUCTION.dbo.Job_Operation_Time jot
    WHERE jot.Job_Operation = jo.Job_Operation,0)) AS Cost
FROM PRODUCTION.dbo.Job_Operation jo
WHERE jo.Job = 'A5076027'

错误是: Msg 156,第15级,状态1,第2行,在关键字“SELECT”附近不正确的语法。Msg 102,级别15,状态1,第4行语法不正确。

有人能看到我在这里错过了什么吗?

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-04-06 19:24:37

试试这个:

代码语言:javascript
复制
SELECT jo.Job_Operation, jo.Job, jo.Work_Center, jo.Operation_Service, jo.Est_Total_Hrs,
    ISNULL((SELECT SUM(jot.Act_Run_Hrs)
    FROM PRODUCTION.dbo.Job_Operation_Time jot
    WHERE jot.Job_Operation = jo.Job_Operation),0) AS Cost
FROM PRODUCTION.dbo.Job_Operation jo
WHERE jo.Job = 'A5076027'
票数 3
EN

Stack Overflow用户

发布于 2016-04-06 19:31:08

我不认为你需要一个相关的子查询。在我看来,只需要一个标准的左联接就行了。

代码语言:javascript
复制
SELECT jo.Job_Operation
    , jo.Job
    , jo.Work_Center
    , jo.Operation_Service
    , jo.Est_Total_Hrs
    , SUM(isnull(jot.Act_Run_Hrs, 0)) AS Cost
FROM PRODUCTION.dbo.Job_Operation jo
left join PRODUCTION.dbo.Job_Operation_Time jot ON jot.Job_Operation = jo.Job_Operation
WHERE jo.Job = 'A5076027'
GROUP BY
    jo.Job_Operation
    , jo.Job
    , jo.Work_Center
    , jo.Operation_Service
    , jo.Est_Total_Hrs
票数 2
EN

Stack Overflow用户

发布于 2016-04-06 19:40:44

这在我看来要清楚得多。

代码语言:javascript
复制
SELECT
   jo.Job_Operation, jo.Job, jo.Work_Center, jo.Operation_Service, jo.Est_Total_Hrs
   ,ISNULL(jot.[SumAct_Run_Hrs],0) AS Cost
FROM PRODUCTION.dbo.Job_Operation jo
LEFT JOIN (
    SELECT Job_Operation,SUM(Act_Run_Hrs) [SumAct_Run_Hrs]
    FROM PRODUCTION.dbo.Job_Operation_Time
    GROUP BY Job_Operation
) jot ON jot.Job_Operation = jo.Job_Operation
WHERE jo.Job = 'A5076027'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36460484

复制
相关文章

相似问题

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