2013-05-15 55 views
1

我要完成這樣的事情:聯盟內部在哪裏

SELECT QtdEmbarcados.Total FROM QtdEmbarcados, ProgramacaoBarcas 
WHERE (
(SELECT * FROM 
(
    SELECT ProgramacaoBarcas.ViagemID, ProgramacaoBarcas.Data, ProgramacaoBarcas.TSFechamento FROM ProgramacaoBarcas 
     WHERE CONVERT(DATE, ProgramacaoBarcas.TSFechamento) = CONVERT(DATE, GETDATE()) 
UNION 
    SELECT InsercaoManual.ViagemID, InsercaoManual.Data, InsercaoManual.TSFechamento FROM InsercaoManual 
     WHERE CONVERT(DATE, InsercaoManual.TSFechamento) = CONVERT(DATE, GETDATE()) 
) Retorno) 
QtdEmbarcados.ViagemID = Retorno.ViagemID AND QtdEmbarcados.Data = Retorno.Data) 

而且例如表:

QtdEmbarcados

ViagemId數據總

009 ------ 41000- --10

029 ------ 42000 --- 50

A19 ------ --- 42300 40

ProgramacaoBarcas

ViagemId數據TSFechamento

009 ------ 41000-10/05/2013

019 ------ 42000-NULL

B49 ------ 13000-11/05/2013

InsercaoManual

ViagemId數據TSFechamento

009 ------ 21000-NULL

0D9 ------ 42000-NULL

A19 ------ 42300-10/05/2013

預期結果:

ViagemId數據總

009 ------ 21000-10

A19 ------ 42300-40

在哪裏,我想從表中檢索X(QtdEmbarcados.Total)一些結果,其中這些結果必須是我從表A和B(ViagemIDData得到的範圍內, PKS)。 因此,我讀QtdEmbarcados,檢查表Retorno(A和B聯合)是否存在結果,然後返回。 但我得到的錯誤在轉換線「附近(不正確的sintax」

任何幫助

編輯:?只需插入一個例子,結果一想擺脫QtdEmbarcados是行1(存在於表ProgramacaoBarcas。 )和3(表InsercaoManual存在)。 我以爲工會ProgramacaoBarcasInsercaoManual(相同瑪),並在where子句中使用這些結果。

很抱歉,如果一個做了一些廢話。我是新來的SQL。

謝謝!

+1

您的查詢是沒有意義的。請提供一些樣本數據和預期結果以幫助澄清。 –

+2

您的Where子句不計算爲布爾值,因此是錯誤。你的意思是:WHERE EXISTS((SELECT * ...)?你還需要在子查詢和日期之間有AND或OR,或者該部分應該是子查詢的where子句? –

+0

編輯該主題。 – Juliano

回答

2

嘗試這一個 -

DECLARE @curr_date DATE = GETDATE() 

SELECT q.Total 
FROM dbo.QtdEmbarcados q 
JOIN dbo.ProgramacaoBarcas r ON q.ViagemID = r.ViagemID AND q.Data = r.Data 
JOIN (
    SELECT p.ViagemID, p.Data, p.TSFechamento 
    FROM dbo.ProgramacaoBarcas p 
    WHERE CONVERT(DATE, p.TSFechamento) = @curr_date) 

    UNION 

    SELECT i.ViagemID, i.Data, i.TSFechamento 
    FROM dbo.InsercaoManual i 
    WHERE CONVERT(DATE, i.TSFechamento) = @curr_date) 
) t ON q.ViagemID = t.ViagemID AND q.Data = t.DATA AND ... -- <-- your WHERE clause 
+0

像魅力一樣工作 – Juliano

+0

好吧,我很高興t o幫助你:) –