我有一个名为Registration的表,里面有4个字段。候选人ID,日期,AMPM,注册。
表格中包含的数据如下
123, 6/7/2014, AM, /
123, 6,7,2014, PM, \
125, 6,7,2014, AM, /
125, 6,7,2014, PM. P
123, 7,7,2014, AM, I
123, 7,7,2014, PM, \
124, 7,7,2014, PM, \
我有一个查询,它为每个候选人提取数据,命令最新的日期降序。
Select CandidateID, "Date", AMPM, Register
From Registration
WHERE CandidateID=CandidateID
ORDER BY "Date" DESC
但是我想更进一步,通过candidateID和date加入结果,所以我得到以下输出。
123, 6/7/2014, AM, /, PM, \
125, 6,7,2014, AM, /, PM, P
123, 7,7,2014, AM, I, PM, \
124, 7,7,2014, , , PM, \
有人可以指出我正确的方向,不确定是否使用内部联接或联合。我想我需要在Where子句中添加和AMPM =“AM”来过滤早晨,但是如何让PM行显示在同一行上。
感谢所有回复
答案 0 :(得分:1)
这是你想要实现的目标吗?
select A.CandidateID, A."DATE", A.AMPM, A.Register, B.AMPM, B.Register
from Registration as A
inner join Registration as B on A.CandidateID = B.CandidateID and A."Date" = B."Date"
and A.AMPM = 'AM' and B.AMPM = 'PM'
另外:如果可能存在full outer
的行而没有相应的AM
(反之亦然),则需要PM
加入。
答案 1 :(得分:0)
当我从你那里收集时,
选择R.CandidateID,R.Date,R.AMPM,R1.AMPM,R.Register from Registration R join Registration R1 on R.CandidateID = R1.CandidateID和R.Date = R1.Date 由R.Date desc命令
试着发布如何需要输出。
答案 2 :(得分:0)
@ OUByWyrostek建议的完整OUTER JOIN查询
select
(CASE A.CandidateID IS NOT NULL THEN A.CandidateId ELSE B.CadidateId) CandidateId,
(CASE A."DATE" IS NOT NULL THEN A."DATE" ELSE B."DATE") RegisterDate,
A.AMPM,
A.Register,
B.AMPM,
B.Register
FROM Registration A
OUTER JOIN Registration B ON A.CandidateID = B.CandidateID
and A."Date" = B."Date"
and A.AMPM = 'AM'
and B.AMPM = 'PM'
ORDER BY RegisterDate DESC