回答

收藏

如何将两个查询的结果合并为一行?

技术问答 技术问答 327 人阅读 | 0 人回复 | 2023-09-14

我有两个查询,每个查询返回一个结果,即一个数字, K. ~$ d: r) [- a0 n: \; v
Select Count(*) as StockCountA from Table_A where dept='AAA'
& h/ A- H2 F& r结果8 r4 r1 r# X. ?9 y
StockCountA 9 p+ n9 D" m6 ~+ ]! h( n2 M5 M+ o
550
2 m9 v+ E* _4 Y8 N6 t8 @- ~, Z4 A0 y3 i
Select Count(*) as StockCountB from Table_B where dept='BBB'
5 L4 @5 w3 [. {- c% r$ M+ i结果
! v) H% m. e0 k. y1 a7 TStockCountB
+ H5 S9 k  |- g, \( D1 ^7 J9 F) m4505 O3 ]2 i+ e$ u; h' l
我希望将两个结果合并为一行记录,即
$ a  Q3 A% E0 J, ~. Y, [5 J| StockCountA | StockCountB   
* R0 @, j  V) [" u| 550         | 4501 C" H/ u0 }( U* ^4 h& A
               
; T/ n/ M; H* H* l. ~5 F0 l解决方案:
+ w# A+ m9 u2 @4 a! K( E                % C' k9 h9 Z+ A2 K
5 T9 C& y; e/ f; }/ ^' b

3 }9 r7 G- C3 d3 y* b                您可以使用:
' ~5 `+ n0 m$ |5 n5 N6 Tselect) ^$ r. k7 C- f8 j' L. E& z
(Select Count(*) as StockCountA from Table_A where dept='AAA') as StockCountA,
9 k! f3 G6 t8 R% K! I' h(Select Count(*) as StockCountB from Table_B where dept='BBB') as StockCountB3 ~; U2 ~2 Q# V0 `! o
说明:您可以在select语句中选择单个值作为字段,因此可以编写如下内容:/ X5 N4 I" a( [' K! T% }
select
/ c* U% Q- _2 N2 P# g4 z, `# |  x.*,+ S" P. o) w3 X" l* ?
  (select Value from Table_Y y) as ValueFromY
' w0 D" `  K$ j0 D0 S4 N' Jfrom
6 @$ r' `; |! v; L% q  Table_X x
. Y( r0 A! z7 \7 n2 r这仅对 标量
1 ]5 E8 F; ?  B" Y查询有效,这意味着子查询应具有精确的1列,最多1行。如果有0行,则ValueFromY将返回,NULL而如果有1行以上,则查询将失败。' T- D4 X, D& ^+ _) T
select(在SQL Server,MySQL和其他可能的数据库中)的另一个功能是,您可以只选择值而根本不指定表,如下所示:
  X& z9 `/ L) R. K% |$ A6 QSelect  T& }0 E' a4 J
  3.14 as MoreOrLessPI
" y. s1 l0 a" X; H您可以通过编写类似于以下内容的查询,将这两个事实结合起来以将两个计数合并为一个结果:
/ m& N7 c5 i3 I' f( O1 }5 YSelect
4 h7 F9 G& t5 V0 \  (Select query that returns at most 1 row) as Result1,
8 k1 K# c0 L1 @  (Select another query that returns at most 1 row) as Result2
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则