回答

收藏

如何在分组依据中使用案例陈述列

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

如该问题所述,我试图制定一个查询,该查询在列结果中包含一个case语句,然后我想将该列包含在查询的group4 I# A- B$ j! f" A
by语句中。举一个具体的例子,这几乎是我查询的样子:4 W4 Y/ `' L9 ?! V
SELECT SOME_TABLE_ALIAS.COLUMN1, OTHER_TABLE_ALIAS.COLUMN2,
; `3 _; f8 \) z* o1 x1 j+ d3 @CASE
1 s+ V5 P+ E) |- O    WHEN SOME_TABLE_ALIAS.COLUMN3 IS NOT NULL THEN 'A'
( N0 S2 v% [. O  T: d    ELSE 'B'9 e9 _* f* N$ }, x4 T
END AS CASE_COLUMN
3 C0 P; h( n# O* i/ [FROM SOME_TABLE SOME_TABLE_ALIAS$ {3 l7 v! X3 \. y+ e
... (other table joins and where clauses)
" \% ]" d( u( YGROUP BY SOME_TABLE_ALIAS.COLUMN1, OTHER_TABLE_ALIAS.COLUMN2, CASE_COLUMN3 v( B- [8 W# G$ D4 e( f0 j# P
在来到这里之前,我检查了一些网站,包括该网站,以尝试解决我的问题。我尝试CASE在链接的网页中显示“
$ g' Z& O' }. e4 b+ {/ `' Blike”之后添加另一个别名,但是没有运气。我继续收到的错误消息如下:, o# Q# m8 e" Y! H( |" C. z3 v
[Error] Script lines: 127-151 ----------------------
% A* K) p: r6 S; r2 h/ I5 N CASE_COLUMN IS NOT VALID IN THE CONTEXT WHERE IT IS USED. SQLCODE=-206, SQLSTATE=42703, DRIVER=3.53.71
' B, G. a) Q1 m; S, K4 ~+ {, \5 n是否还有其他人遇到我所面临的问题,并且能够GROUP BY在CASE声明的结果上使用?任何帮助,将不胜感激。哦,DB2版本是z /
0 c0 V# W9 K9 y0 f1 E: }) NOS实例,版本10(DSN10015)
- z9 J8 R( ]. S                9 {% h0 s8 x; M- m% U0 p3 U
解决方案:
, M% A+ u. `. q6 `6 e( r                & y- x: z; L, |* f' R
! K+ \, {! s6 z- t3 `* l

+ _( z! x' a9 X$ P" T0 z# _& ?                别名不能在GROUP BY中使用,因为GROUP BY发生时,别名尚未定义:: p: ]  h3 ^  b1 ^3 z1 `+ Y
Here's the order:/ t8 q" z# O/ |9 W
1.FROM
- X% t5 X2 |  V0 t, d7 x& @* i2.WHERE
' e7 L( M$ i1 _* Z0 n- l1 V3.GROUP BY3 T1 ^# C1 {7 w2 ^# f2 C; z
4.HAVING2 m1 q9 I" Y9 V9 M: f0 R  F1 X) ^* C
5.SELECT
1 ]! D' ~& C) e. h( D' `" W6.ORDER BY/ D3 Q) C) y5 k
您可以使用以下方法解决此问题:* n  D  W" }2 w( b: n; O1 h% X8 k
SELECT column1,column2,case_column
% I1 m% K9 t( t% X+ A5 x- l) kFROM () \1 @& Z; d% s3 {5 v9 Q4 ]
SELECT SOME_TABLE_ALIAS.COLUMN1, OTHER_TABLE_ALIAS.COLUMN2,: t( K. X3 j7 \9 K2 f9 _, l
CASE& q, Y: D9 t! P/ z; A' x- E/ D
    WHEN SOME_TABLE_ALIAS.COLUMN3 IS NOT NULL THEN 'A') H$ d/ F% M, ?. Z
    ELSE 'B'/ m( y8 u+ n& S7 Y4 ^* p3 Z* Y
END AS CASE_COLUMN
% m5 ~& G0 K; ^! h/ HFROM SOME_TABLE SOME_TABLE_ALIAS
5 s2 K- r% D8 D) L; U4 I; w& x( @... (other table joins and where clauses)
0 D, I( U; N; M2 {) K  \) a9 w3 y. J: r7 y3 u3 l4 }& C1 B
GROUP BY COLUMN1, COLUMN2, CASE_COLUMN* S# i% _2 I. N; p! ?* U3 C
或者只使用您在GROUP BY中的SELECT中使用的情况
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则