当另一列的对象相同时查询列更改

时间:2014-10-10 20:13:58

标签: sql

目的:我需要查询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应该。

我不知道从哪里开始。

1 个答案:

答案 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)