0

私は SQL を初めて使用するので、これは非常に一般的で簡単な質問かもしれません。チーム 1、チーム 2、チーム 3 ではなく、最高から最低の順に並べたいと思います。以下を参照してください。

SQL

Select (select SUM(Amt) from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '1' and W.Activity = '2' ) AS Team1,
   (select SUM(Amt) from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '2' and W.Activity = '2' ) AS Team2,
   (select SUM(Amt) from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '3' and W.Activity = '2' ) AS Team3,
   (select SUM(Amt) from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '4' and W.Activity = '2' ) AS Team4,
   (select SUM(Amt) from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '5' and W.Activity = '2' ) AS Team5,
   (select SUM(Amt) from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '6' and W.Activity = '2' ) AS Team6,
   (select SUM(Amt) from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '7' and W.Activity = '2' ) AS Team7,
   (select SUM(Amt) from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '8' and W.Activity = '2' ) AS Team8,
   (select SUM(Amt) from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '9' and W.Activity = '2' ) AS Team9,
   (select SUM(Amt) from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '10' and W.Activity = '2' ) AS Team10

現在、結果は次のように表示されます。

ここに画像の説明を入力

チーム名ではなく、最高から最低まで表示したい。これは Order By で実行できますか? 私はそれを機能させることができないようです。

チーム 2 - 597、チーム 7 - 540、チーム 3 - 467 など

4

2 に答える 2

1

Order by列ベースではなく、行ベースの操作です。あなたができることは、このクエリを行ベースに変換し、値で並べ替えることです。

select * from (
    select SUM(Amt) as Amt, 'Team1' as Team from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '1' and W.Activity = '2' 
    union 
    select SUM(Amt), 'Team2' from Tracker W JOIN Teams T ON W.Username = T.Name where T.Team = '2' and W.Activity = '2'  
    ...) as T
order by Amt
于 2013-07-09T17:41:50.400 に答える
1

上記の Aaron Bertrand のように、ORDER BY は単一の行には適用されません。

このようにクエリを変更したい場合があります

select T.Team ,SUM(Amt) as TeamTotal
from Tracker W 
JOIN Teams T 
    ON W.Username = T.Name 
where W.Activity = '2'
AND (ISNUMERIC(T.Team) = 1 AND CAST(T.Team AS INT) BETWEEN 1 AND 10)
GROUP BY T.Team 
ORDER BY TeamTotal DESC
于 2013-07-09T17:47:12.143 に答える