Sql 如何申请分组,或者是否有其他选择?

Sql 如何申请分组,或者是否有其他选择?,sql,Sql,这是我的桌子 id StudentName SubCode Grade Stdid 3 leena 1 A 1 4 leena 2 A 1 5 leena 3 B 1 1 pinky 1 A 1 2 pinky 2 A 1 8 smita 1

这是我的桌子

id  StudentName SubCode Grade   Stdid
3   leena          1      A       1
4   leena          2      A       1
5   leena          3      B       1
1   pinky          1      A       1
2   pinky          2      A       1
8   smita          1      A       1
7   Megha          1      A       2
6   Rupali         1      A       2
成绩从A到D。当同一个stid的成绩相同时,我只想显示一次记录,而不管子代码和学生名是什么。如果我获取的是特定的子代码,则应该是学生名。如果同一个stid的成绩不同,则显示两条记录。我想展示给大家看

StdId Studentname Subcode Grade
1     pinky      2        A
1     leena      3        B
2     Rupali     1        A
如果我使用这样的查询:

  Select Max(StdId) as stid, Max(SubCode) as SubCode,max(Studentname) as Studentname ,Max(Grade) as Grade
From 
Student_Grade
Group By 
StdId, Grade
  ORDER BY Stdid,grade,Studentname,SubCode
它给了我输出,但这是错误的

stid    SubCode Studentname Grade
1        2     smita        A
1        3     leena        B
2        1     Rupali       A
若我正在获取smita,smita子代码的值应该不是最大值。smita子代码的值是1


我认为max应该在studentname或subcode上应用,而不是两者都应用。如果我在其中一个上应用,group by将不起作用。如何处理这个问题?

很难理解这个问题,但是

选择最大值(StdId)。。。。按StdId分组
绝对不是您需要的东西。悖论:)

按studentName对它们进行分组,并聚合其余的

您可以尝试使用ROW_NUMBER()按记录分组,然后选择所需的数据

SELECT Stdid as StdId, DISTINCT StudentName as Studentname, MAX(SubCode) as Subcode, Grade
FROM  Student_Grade
GROUP BY StudentName
;WITH CteFirstGroup AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY Stdid,Grade ORDER BY Stdid,Grade) AS GrpStdIdGrade
FROM (
SELECT id
    ,StudentName
    ,SubCode
    ,Grade
    ,Stdid
FROM  Student_Grade)tbltemp),

--get only distinct records group by  Stdid and Grade
SELECT id
    ,StudentName
    ,SubCode
    ,Grade
    ,Stdid FROM CteFirstGroup
WHERE GrpStdIdGrade = 1;

您使用的是哪种数据库管理系统?博士后?Oracle?问题不在于输出,而在于请求:您的查询不是满足您的请求所需的内容(顺便说一句,您的请求不清楚,正在阅读您的帖子…)。当与您的查询匹配时,输出是正确的;您正在执行一个非常奇怪的查询,该查询注定会生成该结果,并且会按要求执行。这是绝对错误的解决方案。他正是因为这个原因而面临问题,并在寻找其他解决方案。这不是标准的SQL,很可能是不正确的。此外,你没有解释为什么或者如何回答这个问题。“你能吗?”本,我的错。很难理解OP的问题。当我自己对语法和问题本身不太确定时,也许我不应该发布答案。谢谢你指出,伙计。:)