我有两个表,一个Orders
包含一个html" target="_blank">用户订单列表表和OrderShippingCosts
其中包含的价格发售基于对每个项目表OrderTypeID
在Orders
表中。
我正在运行如下查询来计算总运输费用:
SELECT
SUM(CASE
WHEN OR.OrderTypeID = 1
THEN (SELECT CostOfShippingSmallParcel
FROM OrderShippingCosts)
ELSE (SELECT CostOfShippingBigParcel
FROM OrderShippingCosts)
END) AS TotalShippingCost
FROM
Orders AS OR
但我收到以下错误:
无法对包含聚合或子查询的表达式执行聚合功能
有人知道我的查询出了什么问题吗?
函数在输入中SUM
采用一个 表达式 ,该 表达式的
结果为单个数据值,而不是数据集。来自MSDN的 表达式 定义:
是SQL Server数据库引擎评估以获得 单个数据值 的符号和运算符的组合。
您试图传递SUM
功能而不是单个数据值的数据集(这是子查询的结果)。这是您要查询的内容的简化:
SELECT SUM(SELECT Number FROM SomeTable)
这是无效的。有效的查询将是:
SELECT SUM(Value) FROM SomeTable
在您的特定情况下,您似乎很失踪JOIN
。您的原始逻辑将得出OrderShippingCosts
表的每一行的整个表的摘要Orders
。我认为应该是这样的:
SELECT
SUM
(
CASE
WHEN ord.OrderTypeID = 1 THEN ship.CostOfShippingSmallParcel
ELSE ship.CostOfShippingBigParcel
END
) TotalShippingCost
FROM Orders AS ord
JOIN OrderShippingCosts ship ON /* your search condition, e.g.: ord.OrderID = ship.OrderID */
顺便说一句,将保留符号用作别名,名称等不是一个好主意。在查询中,您OR
用作Orders
表的别名。符号OR
保留用于逻辑or
操作。如果你真的需要使用保留的符号,把它包装成[
和]
方括号。看看这里和这里了解更多详情。
它为集合中的每个元素重复一组语句。 此循环用于访问和操作数组或VB.Net集合中的所有元素。 此循环结构的语法是 - For Each element [ As datatype ] In group [ statements ] [ Continue For ] [ statements ] [ Exit For ] [ statements ] Next [ el
可以将select语句作为外部select语句的语句序列的一部分。 即使内部和外部选择的case常量包含公共值,也不会产生冲突。 例子 (Example) Module decisions Sub Main() 'local variable definition Dim a As Integer = 100 Dim b As Integer = 200
问题内容: 我已经看过类似于此问题的各种问答,但是还没有找到解决方案。 我所拥有的一个枚举代表了观看电视指南的不同方式… 在NDroid 类中 …当用户更改视图时,事件处理程序会收到0-2的值,而我想做这样的事情… 在Android 事件处理程序中 我已经习惯了C#枚举和select / case语句,这些语句允许类似上面的内容,而且我知道Java的处理方式有所不同,但是我根本无法理解需要做什么。
本文向大家介绍VBS基础篇 - 条件语句(if与Select Case),包括了VBS基础篇 - 条件语句(if与Select Case)的使用技巧和注意事项,需要的朋友参考一下 If...Then...Else 在下面的情况中,您可以使用 If...Then...Else 语句: 在条件为 true 时,执行某段代码 选择两段代码之一来执行时 要运行多行代码,必须使用多行(或块)语法,多行(或块
问题内容: 我正在使用JDBC模板,并希望使用准备好的语句从数据库中读取数据。我遍历.csv文件中的许多行,并且在每一行上执行一些具有相应值的SQL选择查询。 我想加快从数据库中的读取速度,但是我不知道如何使JDBC模板与准备好的语句一起使用。 有PreparedStatementCreator和PreparedStatementSetter。如本例所示,它们都是使用匿名内部类创建的。但是在Pre
问题内容: 我有一个查询应该这样运行- 我如何在T-SQL中实现此目标而不为每个子句编写单独的查询?目前我正在运行它 只是为了根据值选择不同的列而已,这只是大量的冗余代码。还有其他选择吗? 问题答案: 此处仅需注意,出于优化的原因,最好有3个单独的SELECTS。如果只有一个SELECT,则生成的计划将必须投影所有列col1,col2,col3,col7,col8等,尽管取决于运行时@var的值,