Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
309 views
in Technique[技术] by (71.8m points)

sql server - Trying to use UNION on multiple queries but won't work because of my subquery uses AVG

I'm trying to basically run 6 select queries(displayed two for the sake of readability but its basically that same pattern) and using union to create a single output. However, when I run the query, I get 2 of the following errors.

  • Msg.141 A SELECT statement that assigns a value to a variable must not be combined with data-retrieval operation.
  • Msg.10734 Variable assignment is not allowed in a statement containing a top-level UNION, INTERSECT or EXCEPT operator.

I understand and have looked at similar questions but nothing seems to work.

I would like to have the output look like this

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

Any suggestions or direction would be greatly appreciated!

question from:https://stackoverflow.com/questions/65891456/trying-to-use-union-on-multiple-queries-but-wont-work-because-of-my-subquery-us

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

I don't see why you need variables at all here. You need an OVER clause to calculate the average over all the rows:

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;

I note that your query appears to be filtering on specificdate. SO you can just group by the empty set: group by ()


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...