目的:我需要查询ITEM编号和VALUE,其中相同ITEM编号的VALUE不同。
表数据:
表格包含列:ITEMS,TYPE和VALUE
ITEM CL1包含6行,4行有TYPE = P,2行是TYPE = K,所有6行都有VALUE = 10.
ITEM CL2包含6行,4行具有TYPE = P且所有都具有VALUE = 1,2行是TYPE = K且两者都具有VALUE = 9
ITEM CL3包含6行,4行具有TYPE = P,3行具有VALUE = 20和1行VALUE = 3,2行是TYPE = K且两者都具有VALUE = 15
ITEM CL4包含8行,6行具有TYPE = P且所有都具有VALUE = 18,2行是TYPE = K且1行具有VALUE = 11而另一行具有VALUE = 7
所需结果:ITEM CL1不应作为查询结果的一部分返回,但是,ITEM CL2,ITEM CL3和ITEM CL4应该。
我不知道从哪里开始。
答案 0 :(得分:0)
首先,您应始终以此格式表示样本数据和所需输出
ITEMS TYPE VALUE
CL1 P 10
CL1 K 10
CL2 P 1
CL3 P 1
CL4 K 9
CL4 K 9
让我们假设表名是TableA
如你所说
我需要查询VALUE所在的ITEM编号和VALUE 不同的ITEM编号。
我们需要知道所有具有多个值的项目编号,因此我们使用HAVING函数
SELECT Items FROM TableA GROUP BY Items HAVING COUNT(Value)>1
由于您不希望结果集中包含项目CL1,因此您应添加WHERE子句
WHERE Items!= 'CL1'
因此您的查询是
SELECT Items, Type, Value
FROM TableA
WHERE Items!= 'CL1'
AND Items IN (SELECT Items FROM TableA GROUP BY Items HAVING COUNT(Value)>1)