因此,我试图在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
答案 0 :(得分:1)
您正在允许单个值的上下文中使用子查询。这样的子查询称为标量子查询。
但是,子查询返回多个列。那是不允许的。标量子查询只能返回一列,最多只能返回一行。
您的问题尚不清楚您要完成什么,所以我只能解释您遇到的问题。