繁体   English   中英

计算几列中值出现的次数

[英]Count number of occurrence of a value in several columns

给出下表:

PERSON    IS_EMPLOYED        IS_MARRIED        IS_STUDENT

John        Y                   N                Y 
Tom         N                   Y                N
Rob         N                   N                N
Ron         Y                   Y                Y

如何计算每个人的Y和N总数,以得到以下结果?

PERSON     TOTAL_Y         TOTAL_N

 John        2               1
 Tom         1               2
 Rob         0               3
 Ron         3               0

我正在使用Access,并且可以使用VBA来实现,但是我想知道是否有一种更快的解决方案可以仅使用SQL来实现。

您可以尝试以下查询

SELECT
   Person,
   IFF(IS_EMPLOYED = 'Y', 1,0) + IFF(IS_MARRIED = 'Y', 1,0)+ IFF(IS_STUDENT = 'Y', 1,0)  AS TOTAL_Y,
   IFF(IS_EMPLOYED = 'N', 1,0) + IFF(IS_MARRIED = 'N', 1,0)+ IFF(IS_STUDENT = 'N', 1,0)  AS TOTAL_N
FROM Persons;

有两种方法可以做到这一点。 联合查询将是一个不错的选择,因为将来很容易扩展或添加更多计算:

SELECT
    person,
    sum(iif(yesno='Y', 1, 0)) as Total_Y,
    sum(iif(yesno='N', 1, 0)) as Total_N
FROM
    (     
        SELECT person, is_employed as yesno FROM table
        UNION ALL
        SELECT person, is_married FROM table
        UNION ALL 
        SELECT person, is_student FROM table
    ) AS yesnoquery
GROUP BY person

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM