枢轴旋转一领域的基础上的日期范围在表B>=的日期范围在表A

0

的问题

我想枢行为列是根据格式的日期'yyyy-嗯'虽然该作品作为预期为目前的一个月期间,它无法工作,未来几个月我不能如何解决这个问题,并将非常感谢任何的反馈。

这里有一点小小的背景: 我已经购买量来自一个供应商的摘要表格,包括信息有关的合同,例如合同类型、数量、数量、创建日期格式的进入'yyyy-嗯',因为实际日期不会不管用于这一目的。

剩余数量是另一个领域来自一个项目分类账项目表中本质上是总结各种项目基于的很多数。

消耗量是什么我想枢的基础上个月,这是消费也是来自项目的分类帐条目有一个条目的类型过滤器

SELECT * 
FROM 
(
SELECT VS.[Vendor Name], VS.[Vendor No_] AS 'Vendor_No', VS.[Date] AS 'Date', 
SUM(VS.Quantity) AS 'Contracted_Quantity',
SUM(CQ.Consumed_Qty*-1) AS 'Consumed_Qty',
SUM(RQ.Remaining_Qty) AS Remaining_Qty,
'Contract Type' = 
CASE 
  WHEN VS.[Contract Type] = 1 THEN 'CONTRACT A'
  WHEN VS.[Contract Type] = 2 THEN 'CONTRACT B'
  ELSE 'OTHERS'
  END 
FROM
(SELECT [Document No_],[Vendor No_],[Lot No_],FORMAT([Date Created], 'yyyy-MMM') AS 'Date'
      ,[Purch_ Contract No_],[Contract Type],[Quantity] FROM [A].[dbo].[Company$Volume Summary]) VS

/*to identify remaining quantity by lot (Lot no. is included in my VS alias statement)*/
LEFT JOIN (SELECT [Lot No_] ,SUM([Remaining Quantity]) AS Remaining_Qty FROM [A].[dbo].[Company$Item Ledger Entry]
  GROUP BY [Lot No_]) RQ on RQ.[Lot No_] = VS.[Lot No_]

/*to identify consumed volume, if consumption is in future month compared to purchase month, it doesn't populate, this is where I believe the problem is*/
LEFT JOIN (SELECT [Lot No_],FORMAT([Posting Date], 'yyyy-MMM') AS 'Date',SUM([Quantity]) AS Consumed_Qty
FROM [A].[dbo].[Company$Item Ledger Entry]
WHERE [Entry Type] = '5' 
GROUP BY [Lot No_], Format([Posting Date], 'yyyy-MMM')) CQ on CQ.[Lot No_] = VS.[Lot No_] and CQ.Date >= VS.[Date]

GROUP BY VS.[Vendor Name], FORMAT(VS.[Date Created],'yyyy-MMM'), PT.[Contract Type], VS.[Vendor No_]
) cs 
PIVOT
(
 SUM(Consumed_Qty)
  for Date in ([2021-Sep], [2021-Oct], [2021-Nov])
  ) pvt

结果(仅表示部分):

enter image description here

正如你可以看到,第二ABC技术的记录显示,消费在2021-Oct是准确的,但是,根据这一合同数量购买的也在2021-Oct,并且什么是剩余的在于记录,该消费需要9,373和短(383)相比8,990它被准确地显示在2021-Oct. 在这种情况下383实际消耗量下降在2021-Nov,但是,我的代码似乎并没有把那个捡起来

这是确切的情况下在两个斑马的技术,记录以及,在那里的剩余的是0这将意味着已经完全被消耗,但是,由于采购合同日期为他们两人都在2021-Sep和消耗量在未来月份2021-Oct,SQL脚本不挑起来。

我感谢任何的指导,以帮助解决这个问题,并在此先感谢。

pivot sql sql-server tsql
2021-11-22 22:40:04
1

最好的答案

0

你是枢转基于VS。[日期]其是当大量购买,而不是当它被消耗掉。 最后的三栏只显示数量时,该项目是购买和消费在同一个月。

而不是枢整数据集,移动的枢入第三个子查询。 这简化了查询通过得到了很多详细信息,包括Contracted_Qty和Remaining_Qty第一然后加入的第三子查询其是枢组Consumed_Qty由三个月。

SELECT VS.[Vendor Name], VS.[Vendor No_] AS 'Vendor_No',
VS.[Contracted_Quantity],
RQ.Remaining_Qty AS Remaining_Quantity,
'Contract Type' = 
CASE 
  WHEN VS.[Contract Type] = 1 THEN 'CONTRACT A'
  WHEN VS.[Contract Type] = 2 THEN 'CONTRACT B'
  ELSE 'OTHERS'
  END,
CQ.[2021-Sep], CQ.[2021-Oct], CQ.[2021-Nov]

FROM
    (
    /* List of Lots with details */
    SELECT 
        [Document No_],[Vendor No_],[Lot No_], [Purch_ Contract No_],[Contract Type],[Quantity] AS [Contracted_Quantity]
    FROM [A].[dbo].[Company$Volume Summary]
    ) VS

    /* Remaining Quantity for each Lot */
    LEFT JOIN (
        SELECT [Lot No_] , SUM([Remaining Quantity]) AS Remaining_Quantity 
        FROM [A].[dbo].[Company$Item Ledger Entry]
        GROUP BY [Lot No_]
        ) RQ on RQ.[Lot No_] = VS.[Lot No_]

    /* Consumed Quantity per Lot for three months*/
    LEFT JOIN (

        SELECT [Lot No_], [2021-Sep], [2021-Oct], [2021-Nov]
        FROM 
        (
        SELECT [Lot No_], FORMAT([Posting Date], 'yyyy-MMM') AS 'Date', SUM([Quantity]) AS Consumed_Qty
        FROM [A].[dbo].[Company$Item Ledger Entry]
        WHERE [Entry Type] = '5' 
        GROUP BY [Lot No_], Format([Posting Date], 'yyyy-MMM')
        ) AS src
        PIVOT
        (
         SUM(Consumed_Qty)
          for [Date] in ([2021-Sep], [2021-Oct], [2021-Nov])
          ) pvt

        ) CQ on CQ.[Lot No_] = VS.[Lot No_]
;

我不能测试这个查询,而无需的数据,但它应当是非常接近。

2021-11-23 20:47:23

谢谢你的回应。 原因我使用的总和(剩下),是因为该项目分类账项目表有多次入境类型、购买、进行调整,消费。 所总结的所有条目的类型为每个批号是什么得到我的剩余数量,它不会扎到我的大量库存分类账。 然而,当我现在使用CQ。新的中枢,并删除>=date加入上CQ,它现在的重复购买记录对每个月的消耗使得所购买的总共通过了很多不正确的。 什么其它的数据可以提供帮助解释我的问题好吗? 感谢您的时间,并帮助这个
Vic

下一次调整将是为移动的枢入第三个子查询。 而不是枢整数据集,得到了很多详细信息,包括Contracted_Qty和Remaining_Qty然后加入的第三子查询其是枢组Consumed_Qty由三个月。
RobertT

我还奇怪你怎么可以得到数量的剩余通过总结的一些数字。 你能提供一些样本数据来证明?
RobertT

没关系的数量剩余。 我只是意识到你的帐表必须记录每一个数字,在两个列。 剩余数量是积极或消极的数量取决于该条目的类型。 总结这将产生数量的剩余。 列名扔我离开.
RobertT

是的,是正确的! 这就是如何的会计科目表中记录的每个条目。
Vic

这是个好主意! 我会尝试移动的枢入查询的,你是对的第一部分,我有我的枢基于购买日期,而不是消费的日期,接下来我按的很多没有。 这似乎已经固定的问题。 但是我喜欢的思想的运动的枢轴的第三子查询,将让你贴! 感谢
Vic

答案更新基础的反馈意见
RobertT

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................