Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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 server 我需要显示给定产品的最高日期时间,但是,当我使用代码时,它会用两个不同的值显示同一产品两次_Sql Server - Fatal编程技术网

Sql server 我需要显示给定产品的最高日期时间,但是,当我使用代码时,它会用两个不同的值显示同一产品两次

Sql server 我需要显示给定产品的最高日期时间,但是,当我使用代码时,它会用两个不同的值显示同一产品两次,sql-server,Sql Server,我来自巴西抱歉英语不好,我在用谷歌翻译 我需要显示给定产品的最高日期时间,但是,当我使用代码时,它会用两个不同的值显示同一产品两次 在这里: 进行选择以显示每个产品的最后一次移动,因为此移动为非零 显示按数量从高到低排序的记录 我只需要显示一个给定产品的日期时间,但是,它显示的是重复的和不同的日期时间 代码: SELECT DISTINCT Produto.CdEmpresa, MovimentoEstoque.NumMovEstoque, MovimentoEstoque.CdPro

我来自巴西抱歉英语不好,我在用谷歌翻译

我需要显示给定产品的最高日期时间,但是,当我使用代码时,它会用两个不同的值显示同一产品两次

在这里:

进行选择以显示每个产品的最后一次移动,因为此移动为非零

显示按数量从高到低排序的记录

我只需要显示一个给定产品的日期时间,但是,它显示的是重复的和不同的日期时间

代码:

SELECT DISTINCT      Produto.CdEmpresa, MovimentoEstoque.NumMovEstoque, MovimentoEstoque.CdProduto, MAX(MovimentoEstoque.DataHora) AS UltimaMovimentaçao, 
MovimentoEstoque.QtdMovimento
FROM Produto
            INNER JOIN MovimentoEstoque ON Produto.CdProduto = MovimentoEstoque.CdProduto
WHERE (MovimentoEstoque.NumMovEstoque <> 0)
GROUP BY produto.cdempresa, movimentoestoque.nummovestoque, movimentoestoque.cdproduto, movimentoestoque.qtdmovimento
ORDER BY MovimentoEstoque.QtdMovimento DESC

我相信您正在寻找每种产品的最新一行。要做到这一点,您需要识别每个CdProduto的最新日期,然后使用该日期作为筛选器来选择要查找的行。这是一个该如何工作的示例:

SELECT Produto.CdEmpresa
    , MovimentoEstoque.NumMovEstoque
    , MovimentoEstoque.CdProduto
    , MovimentoEstoque.DataHora AS UltimaMovimentaçao
    , MovimentoEstoque.QtdMovimento
FROM Produto
INNER JOIN MovimentoEstoque ON Produto.CdProduto = MovimentoEstoque.CdProduto
INNER JOIN (
    SELECT MAX(MovimentoEstoque.DataHora) as DataHora,
        MovimentoEstoque.CdProduto
    FROM MovimentoEstoque
    GROUP BY MovimentoEstoque.CdProduto
    ) as UltimaDataHora
    ON UltimaDataHora.CdProduto = MovimentoEstoque.CdProduto
    AND UltimaDataHora.DataHora = MovimentoEstoque.DataHora
WHERE (MovimentoEstoque.NumMovEstoque <> 0)
GROUP BY produto.cdempresa
    , movimentoestoque.nummovestoque
    , movimentoestoque.cdproduto
    , movimentoestoque.qtdmovimento
ORDER BY MovimentoEstoque.QtdMovimento DESC

请添加示例数据和所需输出,以澄清您的问题。当你编辑你的问题时,你应该用{}按钮格式化你的代码块。哇,非常感谢!CdProduto产品代码仍然重复,但我相信这是因为datetime不完整,只显示日期。我将尝试更改显示的时间,而不是DateHora是DtHoraLancamento发布的日期和时间。我没有想过在另一个内进行选择。因为,我是SQLServer的新手。我找了一些关于如何解决这个问题的视频。在另一个选择中进行此选择是否能够更好地组织?此类型的选择专门用于过滤,就像上面所做的一样,用于选择集合中具有特定、最小或最大值的行。类似类型的查询还有其他用途,但它们通常特定于您的数据需求。请记住,在您决定如何处理查询时,这是一种可能性,当然还有其他753种可能的处理查询的方法:-