SQL在Select语句中显示来自同一表但不同记录的值

时间:2018-06-08 16:20:12

标签: sql-server tsql

我有一个"学生"有两列的表" UserID"和"姓名"。

接下来,我有一个名为" TestResults"有三列,UserID,TestID和TestScore。

对于TestID等于1A或2A的测试,我想运行一个查询,为每个用户显示他们的测试分数。

什么方法是最好的,我想知道Pivot是最好的方式还是另一个更合适的方法。感谢。

2 个答案:

答案 0 :(得分:1)

猜测您的评论,您可以conditional aggregationmaxcase一起使用,以便将结果放在一行:

select s.userid, s.name, 
    max(case when t.testid = '1a' then t.testscore end) as 1ascore,
    max(case when t.testid = '2a' then t.testscore end) as 2ascore
from students s
    join testresults t on s.userid = t.userid
group by s.userid, s.name

答案 1 :(得分:-1)

试试这个 -

SELECT 
   UserID, 
   TestScore 
FROM 
   TestResults 
WHERE 
   (TestID = 1A) 
OR (TESTID = 2A)