CASE语句中的子查询

时间:2020-08-19 17:16:20

标签: sql sql-server

因此,我试图在CASE语句中放置一个子查询。子查询本身工作正常,但是如果我将其放在另一个代码中,将无法处理。我最能解决的是什么?

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

1 个答案:

答案 0 :(得分:1)

您正在允许单个值的上下文中使用子查询。这样的子查询称为标量子查询

但是,子查询返回多个列。那是不允许的。标量子查询只能返回一列,最多只能返回一行。

您的问题尚不清楚您要完成什么,所以我只能解释您遇到的问题。

相关问题