简体   繁体   English

CASE 语句中的子查询

[英]A subquery within a CASE Statement

So I'm trying to put a subquery within a CASE statement.所以我试图在 CASE 语句中放置一个子查询。 The subquery itself is working fine, but if I put it in another code it can't process.子查询本身工作正常,但如果我把它放在另一个代码中,它就无法处理。 What can I do best to solve?我能做的最好的事情是什么?

CASE WHEN dbo.T1.TYPE = 0 
THEN dbo.Data.QTY * dbo.Data.SALESPRICE 
ELSE 
     CASE WHEN dbo.T1.TYPE = 1 
     THEN dbo.Data.QTY * 
          (
          SELECT        dbo.Data.ID, 
               CASE WHEN SUM(dbo.Data.QTY) = 0 
               THEN SUM(dbo.Data.SALESPRICE) 
               ELSE SUM(dbo.Data.SALESPRICE) / SUM(dbo.Data.QTY) 
               END AS REVph
          FROM  dbo.Data LEFT OUTER JOIN
               dbo.T1ON dbo.Data.ID = dbo.T1.ID
          WHERE         (dbo.T1.TYPE = 1)
          GROUP BY  dbo.Data.ID
         ) 
ELSE 0 
END 
END

You are using a subquery in a context where a single value is allowed.您在允许单个值的上下文中使用子查询。 Such a subquery is called a scalar subquery .这样的子查询称为标量子查询

However, the subquery is returning more than one column.但是,子查询返回的列不止一列。 That is not allowed.这是不允许的。 A scalar subquery can only return one column and at most one row.标量子查询只能返回一列和最多一行。

Your question is rather unclear on what you want to accomplish, so I can only explain the problem that you are having.您的问题对您要完成的工作相当不清楚,所以我只能解释您遇到的问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM