sql-server - 尝试在多个查询上使用 UNION 但由于我的子查询使用 AVG 而无法工作
问题描述
我正在尝试基本上运行 6 个选择查询(为了便于阅读,显示了两个,但它基本上是相同的模式)并使用联合来创建单个输出。但是,当我运行查询时,出现以下 2 个错误。
- Msg.141 为变量赋值的 SELECT 语句不能与数据检索操作结合使用。
- Msg.10734 在包含顶级 UNION、INTERSECT 或 EXCEPT 运算符的语句中不允许变量赋值。
我理解并看过类似的问题,但似乎没有任何效果。
我想让输出看起来像这样
|Tabe|Rent|Thd|
---------------------------------
|table1 | 9999 | 8888 |
|table2 | 9999 | 8888 |
任何建议或方向将不胜感激!
解决方案
我不明白为什么你在这里根本需要变量。您需要一个OVER
子句来计算所有行的平均值:
Select
'table1' as TableName,
count(*) as RecordCount,
0.75 * AVG(count(*)) over ()
from table1
where @something = specificDate
group by specificDate
union all
Select
'table2',
count(*) as RecordCount,
0.75 * AVG(count(*)) over ()
from table2
where @something = specificDate
group by specificDate;
我注意到您的查询似乎正在过滤specificdate
。所以你可以按空集分组:group by ()
推荐阅读
- java - 如何在 Java 中将 String 值转换为 Double 或 Int 值?
- c# - 对象旋转后,对象比例无法正常工作:UWP
- xamarin - 如何在 Xamarin.iOS 中使用 Font Awesome?
- python - 删除文件并支持文件导入
- opencl - OpenCL 使用 uchar* 而不是 image2d_t
- c - Linux内核模块中fprintf函数的等价物
- typescript - 打字稿数组到字符串联合
- vue.js - 如何在 Vuex store.js 文件中设置 vuexfireMutations
- ruby - 如何在使用 Docker 安装的 Jenkins 中保存已安装的 gem?
- javascript - 在Javascript中用空格在数组中添加一个字段