【问题标题】:How to combine the results of two queries?如何组合两个查询的结果?
【发布时间】:2020-04-03 20:32:02
【问题描述】:

我创建了一个有两个选择的过程,我想将这两个选择的结果合并为一个。

这是我的程序

CREATE PROCEDURE spConsultarVendas
    @nomeUsuario nvarchar(60), 
    @dataEmissao datetime, 
    @dataSaida datetime 
AS
BEGIN
    SELECT
        NF.ID, NF.NaturezaOperacao, NF.DataEmissao, NF.ValorTotal
    FROM   
        NotaFiscal AS NF
    INNER JOIN
        Venda AS V ON NF.ID_Venda = V.ID
    INNER JOIN
        Usuario AS U ON V.ID_UsuarioComissao1 = U.ID
    WHERE
        U.Descricao = @nomeUsuario 
        AND (NF.DataEmissao >= @dataEmissao AND NF.DataSaida <= @dataSaida)

    SELECT
        SUM(NF.ValorTotal) AS FinalValue
    FROM
        NotaFiscal AS NF
    INNER JOIN
        Venda AS V ON Nf.ID_Venda = V.ID
    INNER JOIN
        Usuario AS U ON V.ID_UsuarioComissao1 = U.ID
    WHERE
        U.Descricao = @nomeUsuario 
        AND (NF.DataEmissao >= @dataEmissao AND NF.DataSaida <= @dataSaida)
END

这些是结果:

我想将这些结果合二为一。

【问题讨论】:

  • 合并它们是什么意思?最终结果应该如何?
  • 你有没有尝试将它们结合起来?也许是一个窗口函数?

标签: sql sql-server join select procedure


【解决方案1】:

您可以轻松地将最终结果添加到第一个查询的每一行:

SELECT NF.ID, NF.NaturezaOperacao, NF.DataEmissao, NF.ValorTotal,
       SUM(NF.ValorTotal) OVER () AS ValorFinal
FROM NotaFiscal NF INNER JOIN
     Venda V
     ON NF.ID_Venda = V.ID INNER JOIN
     Usuario U
     ON V.ID_UsuarioComissao1 = U.ID
WHERE U.Descricao = @nomeUsuario AND
      (NF.DataEmissao >= @dataEmissao AND NF.DataSaida <= @dataSaida)

【讨论】:

  • @AlexGalvão 如果这回答了您的问题,请接受它(通过单击左侧的复选标记) - 这同样适用于您尚未接受答案的所有其他问题..跨度>
猜你喜欢
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
相关资源
最近更新 更多