如何组合2行具有不同的值

时间:2018-04-10 07:41:37

标签: sql sql-server

我有下表:

id  date1     score1     date2     score2
1   today     80         today     88
1   yesterday 90         yesterday 92

问题在于我需要将2行合并为一行,而在每列中将选择突出显示的值,在date1上,最新日期跟随匹配得分1,与date2和得分2完全相反。 / p>

2 个答案:

答案 0 :(得分:0)

如果我理解清楚,那是你的期望吗?

SELECT  t1.ID,t1.DATE1,t1.score1,t2.DATE2,t2.score2
FROM T t1 
INNER JOIN T t2 ON t1.id = t2.id AND DATEADD(DAY,1,t2.DATE2) = t1.DATE1

SQLFiddle

OR

在您的问题中,您可能就像这个查询一样。

SELECT  t1.ID,t1.DATE1,t1.score1,t2.DATE2,t2.score2
FROM T t1 
INNER JOIN T t2 ON t1.id = t2.id 
WHERE t1.date2 = 'today' and t2.date2 = 'yesterday'

答案 1 :(得分:0)

select t1.date1,t1.score1,t2.date2,t2.score2
from yourTable t1
cross join yourTable t2 
where t1.date1 like 'today' and t2.date2='yesterday'

如果您将date1和date2存储为字符串'今天'和'昨天'