Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 联盟在哪里_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql 联盟在哪里

Sql 联盟在哪里,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我想完成这样的事情: SELECT QtdEmbarcados.Total FROM QtdEmbarcados, ProgramacaoBarcas WHERE ( (SELECT * FROM ( SELECT ProgramacaoBarcas.ViagemID, ProgramacaoBarcas.Data, ProgramacaoBarcas.TSFechamento FROM ProgramacaoBarcas WHERE CONVERT(DATE, Prog

我想完成这样的事情:

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

维亚吉德数据总计

009--41000--10

029--42000--50

A19---42300--40

程序奥巴马

维亚吉米德数据公司

009-41000-10/05/2013

019---42000-NULL

B49---13000-11/05/2013

一年一度

维亚吉米德数据公司

009---21000-NULL

0D9---42000-NULL

A19---42300-10/05/2013

预期成果:

维亚吉德数据总计

009-21000-10

A19---42300-40

我想从表XQtdEmbarcados.Total中检索一些结果,其中这些结果必须在我从表a和表B viageId和数据PKs中获得的范围内。 所以,我阅读QtdEmbarcados,检查结果是否存在于表A和表B中,然后返回。 但我在转换行sintax near时出错

有什么帮助吗

编辑:刚刚插入了一个示例。从QtdEmbarcados获得的结果是表programmacobarcas中存在第1行,表insercamanal中存在第3行。 我认为在联合计划中,奥巴马和Insercomanal使用了相同的shema,在where子句中使用了这些结果

对不起,如果你说了些废话。我是SQL新手

谢谢

试试这个-

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

你的询问毫无意义。请提供一些示例数据和预期结果以帮助澄清。where子句的计算结果不是布尔值,因此会出现错误。你是说在哪里存在选择*。。。?您还需要在该子查询和关于日期的位之间使用AND或or。或者该部分应该是子查询的where子句?脚本中有太多问题,无法确定您的确切意图。请将TSFechamento字段添加到示例表中,无论它位于何处,并根据示例数据发布查询的预期结果。更新了联合代码,现在我认为它是正确的。TSFechamento是一个日期时间字段。我应该只带来今天的结果。我做了另一个改变。删除了并集,只留下一个SELECT,可以正常工作。但我需要比较两个表中的选择,而不仅仅是一个。还有别的办法吗?我不能用工会使它工作