2013-07-03 32 views
0

我有以下疑問:合併兩個SQL查詢不同行大小

SELECT TOP 10 
    EnrolledDate, 
    DATEDIFF(MINUTE, EnrolledTimeUtc, EnrollmentCompleteTimeUtc) as Enroll 
FROM StudentEnrollment 
WHERE EnrolledTimeUtc IS NOT NULL 


SELECT 
    AVG(DATEDIFF(MINUTE, EnrolledTimeUtc, EnrollmentCompleteTimeUtc)) as AvgEnrollmentTime, 
    STDEV(DATEDIFF(MINUTE, EnrolledTimeUtc, EnrollmentCompleteTimeUtc)) as EnrollmentStDev 
FROM StudentEnrollment 
WHERE EnrolledTimeUtc IS NOT NULL 

我想這些查詢結合起來,這樣我可以在一個表中的數據。可以做到嗎?

我嘗試使用

SELECT (SELECT...), (SELECT...) 

但隨着行數不符合上面的腳本不工作將它們結合起來。

第一個查詢返回這樣的事:

EnrolledDate    Enroll 
2013-04-24 23:17:59.613  1 
2013-04-24 23:18:01.753  5 
2013-04-24 23:18:03.517  10 
2013-04-24 23:18:05.703  8 

二查詢返回:

AvgEnrollmentTime EnrollmentStDev 
19    22.1125 

我想這兩個表合併,所以應該表明這樣的:

EnrolledDate    Enroll  AvgEnrollmentTime EnrollmentStDev 
2013-04-24 23:17:59.613  1   19    22.1125 
2013-04-24 23:18:01.753  5 
2013-04-24 23:18:03.517  10 
2013-04-24 23:18:05.703  8 

後使用Hiren的腳本我可以這樣工作:

EnrolledDate    Enroll  AvgEnrollmentTime EnrollmentStDev 
2013-04-24 23:17:59.613  1   19    22.1125 
2013-04-24 23:18:01.753  5   Null    Null 
2013-04-24 23:18:03.517  10   Null    Null 
2013-04-24 23:18:05.703  8   Null    Null 

但是有可能讓它看起來像這樣嗎?

EnrolledDate    Enroll  AvgEnrollmentTime EnrollmentStDev 
2013-04-24 23:17:59.613  1   19    22.1125 
2013-04-24 23:18:01.753  5   19    22.1125 
2013-04-24 23:18:03.517  10   19    22.1125 
2013-04-24 23:18:05.703  8   19    22.1125 
+3

「結合這些查詢」是什麼意思?這是否意味着你想要一行所有的值,還是這意味着你想要多行?您需要[編輯]您的問題以提供您的數據樣本,您現在針對每個查詢獲得的輸出結果,以及您希望基於該樣本數據查看您的組合輸出的樣子。謝謝。 –

+0

難道你不能把所有的select語句放到一個查詢中嗎? –

+0

@KenWhite - 對不起,我更新了我的問題,以顯示我正在尋找的東西。 – NoviceMe

回答

0

很容易做到這一點。您必須使用完整的外連接並使用行號連接兩個表。 你可以做以下查詢:

SELECT A.EnrolledDate , A.Enroll ,B.AvgEnrollmentTime , B.EnrollmentStDev 
FROM 
(
    SELECT TOP 10 
    EnrolledDate, 
    DATEDIFF(MINUTE, EnrolledTimeUtc, EnrollmentCompleteTimeUtc) as Enroll 
    FROM StudentEnrollment 
    WHERE EnrolledTimeUtc IS NOT NULL 
) AS A 
, 
(
    SELECT 
    AVG(DATEDIFF(MINUTE, EnrolledTimeUtc, EnrollmentCompleteTimeUtc)) as AvgEnrollmentTime, 
    STDEV(DATEDIFF(MINUTE, EnrolledTimeUtc, EnrollmentCompleteTimeUtc)) as EnrollmentStDev 
    FROM StudentEnrollment 
    WHERE EnrolledTimeUtc IS NOT NULL 
) AS B 
+0

我試過了,但得到以下錯誤:EnrolledTimeUtc在選擇列表中無效,因爲它不包含在聚合函數或GROUP BY子句中? – NoviceMe

+0

好的,只是修改了代碼。覈實 。 –

+0

它現在的作品,但幾乎沒有東西:我現在得到空值有沒有辦法刪除?還有沒有辦法顯示CNT? – NoviceMe