我认为这本来很容易,但我错过了一些东西。
这是我的数据:
ID EMPID Index1
314 021576 5
315 021576 2
317 021576 8
318 021576 12
500 021576 398
501 021576 388
502 021111 4
503 021111 8
这是我的SQL语句。
SELECT COUNT(DISTINCT EmpID) AS Expr1
FROM ProfileData
WHERE (Index1ID = 2) AND (Index1ID = 5)
我正在尝试计算总数为1
答案 0 :(得分:3)
(Index1ID = 2) AND (Index1ID = 5)
是一个始终返回false的where子句。如果你的意思是OR
,它仍然无效,因为它会返回2.
答案 1 :(得分:2)
我的猜测是,您想知道同时包含EMPID
值为2且Index1值为5(Index1ID
021576的行的EMPID
值的数量。 ,EMPID
021111既没有)。有多种方法可以做到这一点
使用设置操作
SELECT COUNT(DISTINCT empid)
FROM (SELECT empid
FROM ProfileData
WHERE Index1ID = 2
INTERSECT
SELECT empid
FROM ProfileData
WHERE Index1ID = 5)
或使用GROUP BY
SELECT COUNT(DISTINCT empid)
FROM (SELECT empid, COUNT(DISTINCT Index1ID) cnt
FROM ProfileData
WHERE Index1ID IN (2,5)
GROUP BY empid)
WHERE cnt = 2
如果您想要与EMPID
值相关联的Index1ID
值列表,那么使用HAVING子句会更容易
SELECT empid, COUNT(DISTINCT Index1ID)
FROM ProfileData
WHERE Index1ID IN (2,5)
GROUP BY empid
HAVING COUNT(DISTINCT Index1ID) = 2