读书人

找出包含 A and B 但是不包含 C 的Cus

发布时间: 2012-12-16 12:02:32 作者: rapoo

找到包含 A and B 但是不包含 C 的CustomerID
查找ProductCode 有 A 并且有B 的CustomerID
但是不能有C

例如下面的一些数据
CustomerIDProductCode
1A
1B
2A
2B
2D
3A
3B
3D
3A
3D
4A
4B
4C
5A
5B
5A
5B
5C
5D
6A
6A
6D
6E
7B
7B
7D
7E



结果应该是

CustomerID
1
2
3
[最优解释]

--> 测试数据:#tb
IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tb
GO
CREATE TABLE #tb([CustomerID] INT,[ProductCode] VARCHAR(1))
INSERT #tb
SELECT 1,'A' UNION ALL
SELECT 1,'B' UNION ALL
SELECT 2,'A' UNION ALL
SELECT 2,'B' UNION ALL
SELECT 2,'D' UNION ALL
SELECT 3,'A' UNION ALL
SELECT 3,'B' UNION ALL
SELECT 3,'D' UNION ALL
SELECT 3,'A' UNION ALL
SELECT 3,'D' UNION ALL
SELECT 4,'A' UNION ALL
SELECT 4,'B' UNION ALL
SELECT 4,'C' UNION ALL
SELECT 5,'A' UNION ALL
SELECT 5,'B' UNION ALL
SELECT 5,'A' UNION ALL
SELECT 5,'B' UNION ALL
SELECT 5,'C' UNION ALL
SELECT 5,'D' UNION ALL
SELECT 6,'A' UNION ALL
SELECT 6,'A' UNION ALL
SELECT 6,'D' UNION ALL
SELECT 6,'E' UNION ALL
SELECT 7,'B' UNION ALL
SELECT 7,'B' UNION ALL
SELECT 7,'D' UNION ALL
SELECT 7,'E'
--------------开始查询--------------------------

SELECT CustomerID
FROM #tb
WHERE ProductCode IN ('A', 'B')
GROUP BY CustomerID
HAVING COUNT(DISTINCT ProductCode) = 2
EXCEPT
SELECT CustomerID
FROM #tb
WHERE ProductCode = 'C'
----------------结果----------------------------
/*
* CustomerID
1
2
3
*/

[其他解释]
SELECT CustomerID 
FROM [t]
WHERE ProductCode IN ('A','B')
GROUP BY CustomerID

[其他解释]
select customerid
from TB
where productcode in ('A','B') and productcode <>'C'
group by customerid
having COUNT(1)=2
[其他解释]
引用:
SQL code
SELECT CustomerID
FROM [t]
WHERE ProductCode IN ('A','B')
GROUP BY CustomerID

这个肯定不对了
[其他解释]
引用:
select customerid
from TB
where productcode in ('A','B') and productcode <>'C'
group by customerid
having COUNT(1)=2

也不对,谢谢了
[其他解释]
引用:

SQL code
--> 测试数据:#tb
IF OBJECT_ID('TEMPDB.DBO.#tb') IS NOT NULL DROP TABLE #tb
GO
CREATE TABLE #tb([CustomerID] INT,[ProductCode] VARCHAR(1))
INSERT #tb
SELECT 1,'A' UNION ALL
SELECT 1,'B' UNION A……

very good!!!!
[其他解释]
引用:
引用:

SQL code
SELECT CustomerID
FROM [t]
WHERE ProductCode IN ('A','B')
GROUP BY CustomerID

这个肯定不对了


没看仔细,确实错了

读书人网 >SQL Server

热点推荐