首页 > 解决方案 > 尝试在多个查询上使用 UNION 但由于我的子查询使用 AVG 而无法工作

问题描述

我正在尝试基本上运行 6 个选择查询(为了便于阅读,显示了两个,但它基本上是相同的模式)并使用联合来创建单个输出。但是,当我运行查询时,出现以下 2 个错误。

我理解并看过类似的问题,但似乎没有任何效果。

我想让输出看起来像这样

|Tabe|Rent|Thd|
---------------------------------
|table1   | 9999      | 8888    |
|table2   | 9999      | 8888    |

任何建议或方向将不胜感激!

标签: sql-server

解决方案


我不明白为什么你在这里根本需要变量。您需要一个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 ()


推荐阅读