2013-03-12 31 views
0

我有這樣的SQL命令:窄下SQL結果集

SELECT RecordedBy as 'Recorded By', COUNT(*) Total 
FROM mytable 
WHERE 
StartedDate BETWEEN DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), '00:01AM') 
AND DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), '11:59PM') 
group by RecordedBy order by Total desc 

我想做到的是通過嵌入這個SQL在另外一個更加細化此查詢的結果,而不改變原來的SQL

比如,我想通過RecordedBy子句來縮小原來的SQL:我雖然做的是這樣的:

select * from mytable in 
(
    SELECT RecordedBy as 'Recorded By', COUNT(*) Total FROM mytable 
    WHERE StartedDate BETWEEN 
    DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP),'00:01AM') 
    AND DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP),'11:59PM') 
    group by RecordedBy order by Total desc 
) 

但是,當然,這將導致語法錯誤。 誰能想到,我現在失去了一些東西?

+1

外部選擇的要求/提煉是什麼?您不能在內部查詢中編寫按條款的訂單。 – TechDo 2013-03-12 10:16:25

+0

優化原始的sql(SELECT RecordedBy as'Recorded By',COUNT(*)Total F ....) – MaVRoSCy 2013-03-12 10:17:13

+0

您也不能通過引用原始表名來引用子查詢。當你修復了其他的語法錯誤時,只要從(SUBQUERY HERE)中選擇*。 – 2013-03-12 10:18:32

回答

0

你可以試試這個

select * from 
(
    SELECT RecordedBy as 'Recorded By', 
     COUNT(*) Total 
    FROM mytable 
    WHERE StartedDate 
     BETWEEN 
      DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP),'00:01AM') 
      AND 
      DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP), '11:59PM') 
) as TAB 
group by TAB.RecordedBy 
order by TAB.Total desc 
+0

我收到此錯誤消息1033級別15狀態1行3 ORDER BY子句在視圖,內聯函數,派生表,子查詢和公用表表達式中無效,除非還指定了TOP或FOR XML。 ' – MaVRoSCy 2013-03-12 10:25:18

0

正確的語法是:

select * from 
(
    SELECT RecordedBy as 'Recorded By', COUNT(*) Total FROM mytable 
    WHERE StartedDate BETWEEN 
    DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP),'00:01AM') 
    AND DATEADD(day, DATEDIFF(day, 0, CURRENT_TIMESTAMP),'11:59PM') 
    group by RecordedBy order by Total desc 
) mytable 

試試吧。

+0

我收到了同樣的錯誤,因爲@yogi上面的答案 – MaVRoSCy 2013-03-12 10:28:51

+0

@MaVRoSCy是否在視圖中執行查詢或者只是在普通查詢窗口中執行查詢? – 2013-03-12 10:38:07

+0

爲了這個工作,我必須從內部的SQL到外部的'order by'子句。如果我把它放在鍵入它時,我得到這個錯誤ORDER BY子句在視圖,內聯函數,派生表,子查詢和公用表表達式中是無效的,除非還指定了TOP或FOR XML。 ' – MaVRoSCy 2013-03-12 10:39:27