我想加入两个表(它们称为寄存器和读取)。结果我想获得 4 列,对应于 Registers ID。
根据下一个示例,通过连接表,我获得了 2 行。在某些情况下,我可能会找到/获得 4 行,因为它们存在于 Reads 表中。
表:寄存器
ID Number Prod_ID
331 01 112233
332 02 112233
333 03 112233
334 04 112233
表:读取
Read_Id Register_Id
011 331
012 332
我使用此查询链接连接两个表:
SELECT rg.ID
FROM Reads rd LEFT JOIN Registers rg on rd.Register_ID = rg.ID
WHERE rg.Prod_ID = 112233;
我的结果是下一个:
ID
331
332
我真正想要的是只获取一行,将第一个结果分配给第一列,第二个结果分配给第二列,依此类推。此外,我想添加一个额外的列,显示有多少列包含信息。
预期结果:
RegisterID1 RegisterID2 RegisterID3 RegisterID4 Count
331 332 2
有什么简单的方法可以做到这一点?非常感谢!
你在 10g 上,所以
PIVOT
不可用,但仍然有旧的sum(case ...)
。Balazs Papp 的解决方案非常有效。我已经编辑了我的下一个问题,它显示了表格(创建,插入......)
我想在表中添加一个新字段:date_reading
我想要的结果是下一个:
表将是
有可能做到吗?
这里有小提琴链接