sql - CASE 语句中的子查询
问题描述
所以我试图在 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
解决方案
您在允许单个值的上下文中使用子查询。这样的子查询称为标量子查询。
但是,子查询返回的列不止一列。这是不允许的。标量子查询只能返回一列和最多一行。
您的问题对您要完成的工作相当不清楚,所以我只能解释您遇到的问题。
推荐阅读
- firebase - 无效参数:在 URI 文件中未指定主机:///
- git - 每次提交后保持工作树/分支与 master 同步
- c# - 在 if-else 子句中跳过公共交通状态
- ecmascript-6 - 并行调用多个异步函数,但在一个特定的异步完成后继续
- python - 使用 Django 运行 collectstatic 时出错
- c++ - 在 main() 中打印双向链表的行为与使用外部函数打印它的行为不同
- javascript - 如果 JS 中有两个或多个相等的值,我需要返回一个工作日数组
- c++ - vcpkg 如何处理依赖于其他库的特定版本的库?
- android - ImageView 不在 MaterialCardView 的边界内
- ios - 当给 stackView 添加标签时,它会添加 4 个标签,而不是 5 个标签。Swift