我对此查询感到很困惑。我想在一行中获取一个上下文的所有数据。我真的不知道该怎么做。这是表格的样本。
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
这可以在单个查询中获得结果吗?
答案 0 :(得分:1)
您可以使用条件聚合执行此操作:
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;