2011-02-14 118 views
1

我有查詢JOIN沒有雙重價值

SELECT frst.Date,t1.Value 
from 
[ArchiveAnalog] frst 
LEFT JOIN 
    (SELECT Date,Value FROM 
    [ArchiveAnalog] scnd 
    WHERE scnd.ID = 1) t1 
    ON t1.Date = frst.Date 

order by frst.Date 

但加入插入值,如果我做GROUP BY frst.Date,我有第二次(不與主節點組)

錯誤,我不能使用t1值與它。

如何在不添加額外行的情況下進行此JOIN?

馬丁我想顯示完整的日期和值只有當ID = 1,還那麼我想補充T2值列等喜歡這裏:

SELECT frst.Date,t1.Value,t2.Value 
from 
[ArchiveAnalog] frst 
LEFT JOIN 
    (SELECT Date,Value FROM 
    [ArchiveAnalog] scnd 
    WHERE scnd.ID = 1) t1 
    ON t1.Date = frst.Date 
LEFT JOIN 
(SELECT Date,Value FROM 
[ArchiveAnalog] scnd 
WHERE scnd.ID = 2) t2 
ON frst.Date = t2.Date 

在這裏我有X2附加行:S採用將值加倍,所以我需要以某種方式對它們進行分組。

+0

因此,如果在'[ArchiveAnalog] scnd`中出現2個匹配的特定日期,您想要使用哪一行?如果您提供一些示例數據可能會更容易。不知道你在這裏試圖做什麼,並且可能不需要自連接。 – 2011-02-14 08:23:52

回答

1

這是否做你所需要的?

SELECT Date , 
     MAX(CASE WHEN ID=1 THEN Value END) AS val1, 
     MAX(CASE WHEN ID=2 THEN Value END) AS val2 
FROM [ArchiveAnalog] 
WHERE ID IN (1,2) /*<-- Not sure if you need this line without seeing your data*/ 
GROUP BY Date 
+0

是的)這個解決方案好多了 – Cynede 2011-02-14 08:40:15

1

您在主查詢中需要DISTINCT(如果您需要t1中最多有一行)或GROUP BY。如果您使用GROUP BY,則需要彙總t1.Value(例如總和,連接等)。