我对这个查询真的很困惑。我想在一行中获取一个上下文的所有数据。我真的不知道该怎么做。这是桌子的样本。
data (table) io(table)
IDData IDIO ReadVal No IDIO IDContext
1 io1 12 1 io1 c1
2 io2 12.5 2 io2 c1
3 io3 11 3 io3 c1
4 io4 12.2 1 io4 c2
5 io5 10 2 io5 c2
6 io6 10.9 3 io6 c2我想得到这个结果
IDContext IO-1 IO-2 IO-3
c1 12 12.5 11
c2 12.2 10 10.9我尝试在循环中这样做,以便在表中打印,而且它可以工作,但我希望在查询中这样做,这样它会更快。
实际上,我的查询是这样的:
SELECT IDContext, IDInput, ReadVal
FROM data
LEFT JOIN io ON io.IDIO = data.IDIO
ORDER BY IDContext, No这有可能在一个查询中得到这个结果吗?
发布于 2015-06-13 03:07:30
您可以使用条件聚合来完成这一任务:
SELECT IDContext,
MAX(CASE WHEN no = 1 THEN data.ReadVal END) as io1,
MAX(CASE WHEN no = 2 THEN data.ReadVal END) as io2,
MAX(CASE WHEN no = 3 THEN data.ReadVal END) as io3
FROM data LEFT JOIN
io
ON io.IDIO = data.IDIO
GROUP BY IDContext
ORDER BY IDContext;https://stackoverflow.com/questions/30814669
复制相似问题