我正在尝试做一个SQL查询,它显示基于比较的数据。这将涉及使用一个表,跟踪每天的库存,称为InventoryByDate。我需要它做的是显示所有的库存,在位置“失去”昨天,然后在任何其他位置今天。我还没有真正看到任何这样的东西的例子,所以帮助将不胜感激。
((库存日期= DATEADD(天,DATEDIFF(天,0,GETDATE()),-1)AND位置名称=“丢失”)AND(库存日期= DATEADD(天,DATEDIFF(天,0,GETDATE()),0)AND NOT位置名称=“丢失”))
我希望括号允许这样做,但在执行时没有得到任何结果
1条答案
按热度按时间6mzjoqzu1#
首先 , 在 提出 这样 的 问题 时 , 您 应该 提供 演示 数据 , 最 好 是 演示 对象 , 或者 根据 需要 提供 对象 。
让 我 来 介绍 一下 这 将 是 什么 样子 :
第 一 个
这 设置 了 易于 复制 的 对象 , 我们 可以 使用 这些 对象 来 演示 您 所 拥有 的 与 您 所 需要 的 。
现在 来 回答 这个 问题 。 你 想 找到 昨天 丢失 的 物品 , 今天 就 有 一 个 商店 。
第 一 次
如果 一 个 产品 的 每个 日期 都 有 一 行 , 那么 这种 方法 就 很 有效 。 但是 , 根据 表 的 工作 方式 , 您 可能 只有 到达 日期 , 仅此 而已 。
不用 担心 , 我们 可以 用 一 点 窗口 函数 魔法 来 填补 空白 !
让 我们 替换 ProductsAndLocations 的 内容 :
格式
现在 , 我们 只有 隔开 的 ArrivedDate 值 。
格式
在 这里 我们 计算 出 下 一 行 出现 的 时间 , 并 从中 创建 一 个 ' LeftDate ' 列 。 使用 该 列 中 的 值 , 并 将 其 限制 在 Lost 位置 , 我们 可以 只 选择 昨天 离开 Lost 位置 的 行 :
格式