回答

收藏

多个列上的SELECT COUNT(DISTINCT')错误?

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

我有一个表VehicleModelYear,其中包含列ID,年份,品牌和型号。" \8 H) u( e* b! Q  M# A9 r, b
以下两个查询按预期工作:
! ~2 U0 H$ q6 C! h! \) _9 CSELECT DISTINCT make, model, B) j( X4 |2 X3 A4 o
FROM VehicleModelYear( @/ f3 k+ T/ i* h2 o2 y& O6 W
SELECT COUNT(DISTINCT make)5 P9 m3 t1 \) u3 V
FROM VehicleModelYear- S/ T1 Q7 L! {$ q5 X2 ]6 Q
但是,此查询不起作用
8 \- Z2 N* L3 XSELECT COUNT(DISTINCT make, model)  P8 H3 E5 F: h% ]5 S( H) ~6 b
FROM VehicleModelYear
3 t% j  p' @) v5 O显然答案是第一个查询返回的结果数,但只是想知道此语法有什么问题或为什么它不起作用。( X8 u: \/ A' N3 i
               
' K/ S7 z; ^4 x0 g/ |  B解决方案:6 S7 G. a. k: k4 L' k& g
               
( V; s) @+ \# J# l! H& K& y
) S6 ^" S5 s* g' _+ `' E- d
* f% V2 s1 |% I( |, b2 c6 g  I                COUNT()中SQL Server接受以下语法/ N6 v7 x# V% h, O& K. u2 O
COUNT(*)( R, z- t: F/ j! B% V) F
COUNT(colName)# u  U4 D/ J" \, C: M# a
COUNT(DISTINCT colName)
' h' K9 w' d* F! f  v/ H7 j& R你可以有一个子查询,返回一套独特的make,并model可以与计数。
, N' B& L# {2 tSELECT  COUNT(*)& G6 Z* Q' j/ }+ Q2 i
FROM3 ~* ?8 _6 J7 W( d) y" R( p! J
        (6 l4 C  Y7 M5 w- @8 c% h! x
            SELECT  DISTINCT make, model- j9 Q+ q& U% k# X
            FROM    VehicleModelYear  Q* x& f* @2 T' p
        ) a, W5 Q6 }: V0 l5 a4 q9 y& l
最后的“ a”不是错字。这是一个别名,没有该别名,SQL将给出错误ERROR 1248 (42000): Every derived table must, X9 |( S, e9 C: M% k
have its own alias。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则