Re: [SQL ] 兩個SQL語法要合併寫在一起
※ 引述《diamondking (天劍流星)》之銘言:
: ※ 引述《TCH (最無價值單身漢)》之銘言:
: : 我要的結果是:
: : 產生一個有三欄的Table,第一欄的資料是Student表格的StuName,第二、三欄的資料
: : 都是SpellSpecify表格的函數計算結果。
: : Student表格內有各個班級的所有學生的基本資料。
: : Spell表格內存放的應是所有學生的值日表(不一定每個學生都會出現在此表)。
: : 並且,Student.StuID = Spell.SpellStuID
: : 因為我正在寫 .Net 的 GridView ,底下有我寫的兩個不完整的語法..
: : 第一個語法:會顯示某個班級內所有 Student 的 StuName於GridView第一欄中。
: : 不完整之處:不知要怎麼安插函數,也不知要放哪個位置。
: : string sqlStrTEST = "select StuName from Student ";
: : sqlStrTEST += "left join Spell on Student.StuID = Spell.SpellStuID and
: : YearMonth = '" + YearMonth + "'";
: : sqlStrTEST += "where Student.UnitID ='" + ClassID.Substring(0, 3) + "' ";
: : 第二個語法:會顯示 Spell 表格中正確的函數值。
: : 不完整之處:不知要怎麼顯示某個班級內的學生於GridView第一欄中。
: : string sqlStrTEST = "SELECT
: : SpellStuName,sum(datediff(hh,StartTime,EndTime)),sum(datediff(hh,StartTime,EndTime))*100
: : as Bonus ";
: : sqlStrTEST += "FROM Spell ";
: : sqlStrTEST += "group by SpellStuName ";
: : 請位小弟解答,感激不盡..
: 其實有比較簡單的寫法:
: select a.StuName,
: sum(datediff(hh,b.StartTime,b.EndTime)) Hours,
: sum(datediff(hh,b.StartTime,b.EndTime))*100 Bonus
: from Student a left outer join Spell b on a.StuID=b.SpellStuID
: where b.YearMonth=200708 and a.UnitID=123
: group by a.StuName
: 大致上是這樣,t-sql的語法不是很肯定,有錯請指正
感謝...
不過這樣的結果,在SQL Server執行卻只有顯示出現在Spell中的資料
我希望有此班級內全部人的資料,因為是 left join 所以右邊會有 null,都要顯示
ps:我好像試出來了,明天再PO上來
(因為是胡亂試出來的,自己現在也忘了作法 ^^|||)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.137.101.19
※ 編輯: TCH 來自: 220.137.101.19 (09/04 22:28)
討論串 (同標題文章)