Select 并计算唯一值,其中 genderX

Select and count uniqe value where gender = X

我有一个 sql 查询:

SELECT t1.Nev, 
       Count(t2.Datum) AS Edzes_szam 
FROM   Adatok t1 
       INNER JOIN (SELECT DISTINCT Kod, 
                                   Datum 
                   FROM   Jelenlet 
                   WHERE  Datum LIKE '" + dtm_year_hkszpp_ym + "%') t2 
               ON t1.Azon_sima = t2.Kod 
GROUP  BY t1.Nev 

只需要gender='X'个数,请大家帮忙改一下

此查询计算某个名称在选定月份内被记录了多少次。 我想为性别做一个过滤器。我必须如何以及在哪里接受这个 where gender = 'X'.

我正在使用 MSOLEDB。

太简单了。如果您在 Adatok table 中有性别列,那么,试试看:-

SELECT t1.Nev, 
   Count(t2.Datum) AS Edzes_szam 
FROM   Adatok t1 
   INNER JOIN (SELECT DISTINCT Kod, 
                               Datum 
               FROM   Jelenlet 
               WHERE  Datum LIKE '" + dtm_year_hkszpp_ym + "%') t2 
           ON t1.Azon_sima = t2.Kod 
WHERE t1.gender = 'X'
GROUP  BY t1.Nev

否则,试试这个:-

SELECT t1.Nev, 
   Count(t2.Datum) AS Edzes_szam 
FROM   Adatok t1 
   INNER JOIN (SELECT DISTINCT Kod, 
                               Datum 
               FROM   Jelenlet 
               WHERE  Datum LIKE '" + dtm_year_hkszpp_ym + "%'
               AND gender = 'X') t2 
           ON t1.Azon_sima = t2.Kod 

GROUP  BY t1.Nev

您的操作不需要子查询:

SELECT A.Nev, Count(DISTINCT J.Datum) AS Edzes_szam 
FROM Adatok a INNER JOIN
     Jelenlet j
     ON A.Azon_sima = j.Kod AND
        j.Datum LIKE '" + dtm_year_hkszpp_ym + "%'
GROUP BY a.Nev ;

使用此结构,您只需在 GROUP BY 之前添加 WHERE gender = <whatever>

您的代码有点暗示您正在使用 LIKE 作为日期。在任何数据库中都不推荐这样做。都有比LIKE.

更好的内置日期和时间函数