不是一个精明的SQL程序员,我在接下来的泡菜中。从表中我可以选择如下。
select Sign as Siggy, Value as Greeky from Table
where ID = 1
这给我提供了以下输出。
Siggy Greeky a-ish alpha
b-ish beta
c-ish gamma
问题在于,由于此处未讨论且不可影响的原因,我需要它是这样的。
A-ish B-ish C-ish
alpha beta gamma
重要的是要注意,我确实知道确认有多少元素(可能是空值)。我可以放心地假设从行映射到的列数是三个或更少。
我尝试通过类似的连接来解决它。
select T1.ID, T1.Value, T2.Value, T3.Value
from Table as T1
join Table as T2 on T2.ID = T1.ID and T2.Siggy = 'b-ish'
join Table as T3 on T3.ID = T1.ID and T2.Siggy = 'c-ish'
这会产生第一行,这是我需要的但它重复(并且有些变化)因为,我怀疑, ON 是< em> JOIN 语句对 FROM 无效。
我可以只获得第一行,但它可以让它更优化。怎么样?!
请注意,转移不是这里的方式,因为我已经有一个固定的行转换限制和我需要尊重列的输出不是& #39; t超过了这个数字。
答案 0 :(得分:1)
您在from
子句中的表格中缺少Siggy = 'a-ish'
的条件。如果将所有术语转换为子查询,查询将变得更加清晰:
select a.ID, a.Value, b.Value, c.Value
from (SELECT ID, Value
FROM Table
WHERE Sign = 'a-ish') a
join (SELECT ID, Value
FROM Table
WHERE Sign = 'b-ish') b ON a.ID = b.ID
join (SELECT ID, Value
FROM Table
WHERE Sign = 'c-ish') c ON a.ID = c.ID