我有一个包含50多个列的表。为了做出决定,我分析了所有变体数据。
实际上是我的查询:
SELECT maincol, count(maincol) FROM table where (conditions) group by maincol having count(maincol) > 1
然后:
SELECT * FROM table where (conditions) and maincol = (previous result)
在咨询之前,显示所有行,我必须一个一个地搜索
col1, col2, col3, col4, col5, col6, manycolumns..., colN
5 7 1 13 341 9 123
5 7 2 13 341 5 123
我想得到:
col3, col6
1 9
2 5
因为很难逐列手动搜索。
-N列可能不同
-我无权访问凭据,因此无法使用编程语言来管理结果。
-使用DB2
答案 0 :(得分:0)
这会有些乏味,但值得。假设col1到coln都是相同的类型。如果不是,则将每个子句都强制转换为select子句中的字符。
结果集将标识多次出现的maincol值,这些值也具有一列或多列具有不同值的列。不同的列将被命名。
选择maincol,colname,count(不同的colvalue) 从( 选择maincol,“ column1”作为列名,col1作为列值 从表 联盟 选择maincol,“ column2”作为列名,col2作为列值 从表 联盟 选择maincol,“ column3”作为列名,col3作为列值 从表 对其余的列重复此模式 ) 按maincol,colname分组 计数(不同的colvalue)> 1
您甚至可以从上方将结果集与原始表连接起来,以显示整行,包括不同列的名称:
选择b.colname,a。* 从表a中选择 从上方包括整个查询 )作为b 其中a.maincol = b.maincol