2014-09-22 23 views
-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到DI要顯示的記錄只有一次,當等級同樣爲同一STID的,無所謂什麼是子碼studentname.If我正在獲取perticular子碼,這是學生名稱應該來。如果等級不同,同時顯示兩個記錄。在這裏,我想表明

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 

如果我取史密塔,子碼爲史密塔的價值應該來爲子碼的史密塔不Max.value等於1

我覺得最大應適用無論是在studentname或註冊碼不both.If我應用於一個,小組將不會工作。如何處理這個?

+1

您正在使用哪些DBMS? Postgres的?甲骨文? – 2014-09-22 11:43:26

+0

這個問題不是輸出,而是請求:你的查詢不是滿足你的請求所需要的(順便說一下,你的請求不清楚你正在閱讀你的帖子...)。當與您的查詢匹配時,輸出是正確的;你正在執行一個非常奇怪的查詢,註定會產生這樣的結果,並按要求做到這一點。 – Paolo 2014-09-22 11:45:27

回答

0

很難理解這個問題,但

Select Max(StdId) .... Group By StdId絕對不是東西,你將需要。悖論:)

組由他們和studentName聚集其餘

+0

它絕對錯誤的解決方案。他因此而面臨問題並正在尋找其他解決方案 – 2014-09-22 11:50:45

-1
SELECT Stdid as StdId, DISTINCT StudentName as Studentname, MAX(SubCode) as Subcode, Grade 
FROM Student_Grade 
GROUP BY StudentName 
+3

這不是標準的SQL,很可能不正確。此外,你不能解釋爲什麼或如何回答這個問題。你可以嗎? – Ben 2014-09-22 12:22:57

+0

@本,我的不好。真的很難理解OP的問題。當我自己對語法和問題本身不太確定時,也許我不應該回答問題。感謝您指出隊友。 :) – 2014-09-23 03:53:54

0

您可以通過記錄嘗試ROW_NUMBER()到組,然後選擇所需的數據。

;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;