我想折叠表以消除sql中的值,但表中有重复的键。例如,我想折叠它:
key1 key2 v1 v2 v3 1 A a NULL NULL 1 A NULL NULL 9 1 A NULL x NULL 1 A b NULL NULL 1 A NULL NULL 8 1 A NULL x NULL 1 A a NULL NULL 1 A NULL NULL 7 1 A NULL y NULL 1 A b NULL NULL 1 A NULL NULL 6 1 A NULL y NULL 1 B a NULL NULL 1 B NULL NULL 5 1 B NULL z NULL 1 B b NULL NULL 1 B NULL NULL 4 1 B NULL z NULL 1 C a NULL NULL 1 C NULL NULL 10 1 C z NULL 1 C b NULL NULL 1 C NULL NULL 11 1 C NULL z NULL
进入这个:
key1 key2 v1 v2 v3 1 A a x 9 1 A b x 8 1 A a y 7 1 A b y 6 1 B a z 5 1 B b z 4 1 C a z 10 1 C b z 11
聚合函数不起作用,我没有成功使用自联接。有什么想法吗?
答案 0 :(得分:0)
你试过"选择不同的"
Select distinct key1, key2, v1, v2, v3
From SomeTable
答案 1 :(得分:0)
您有一个键/值表。这是我们通常避免的事情,但有时无法避免。您的原始表格如下所示:
key1 key2 col value 1 A v1 a 1 A v1 a 1 A v1 a 1 A v1 a 1 A v1 b 1 A v1 b 1 A v1 b 1 A v1 b 1 A v2 x 1 A v2 x 1 A v2 y 1 A v2 y ...
我按照另一个顺序显示行,然后显示查询结果,但这没关系,因为表没有固有的顺序;它包含数据作为无序集。我们可以看到,对于相同的键1 | A | v1,该表包含不同的值(四次'a',四次'b')。这是出乎意料的。通常,键值表会为每个键显示一个值。
因此,您的数据模型可能存在问题。或者表格中有更多列,例如显示历史数据的日期,也使我们能够选择1 | A | v1的当前值。然后,您必须更改原始查询才能将其考虑在内。或者数据模型 是正确的,1 | A | v1确实有四个'a'和四个'b',但是你的预期查询结果没有意义,因为没有什么可以关联v1 ='例如a'到v2 ='x'。
所以 错误:datamodel,现有查询,所需结果。找出哪个。