检查商品的库存是否大于3个月内售出的商品

时间:2020-08-25 04:03:38

标签: sql-server

我正在寻找创建一个报告,该报告将显示3个月的已售出商品和SOH的价值,然后快速检查一下现有商品是否少于3个月的售出数据。

我尝试了以下代码:

select distinct ICILOC.ITEMNO,ICITEM.[Desc],ICILOC.QTYONHAND,UnitsSold,
case
when ICILOC.QTYONHAND < UnitsSold then 'Yes' Else 'No'
end as 'UNIT_LESS_3MONTHS'
from ICILOC
inner join ICITEM on ICILOC.ITEMNO = ICITEM.ITEMNO
inner join ICITEMO on ICILOC.ITEMNO = ICITEMO.ITEMNO
inner join Datawarehouse.dbo.Sales_History on ICILOC.ITEMNO COLLATE DATABASE_DEFAULT = Sales_History.ItemCode COLLATE DATABASE_DEFAULT
where OPTFIELD = 'PG1' and VALUE = 'N' and Office = 'AU' and TranDate >= DATEADD(DAY, -90, GETDATE()) and LOCATION = 'M' and INACTIVE = '0'

但是我最终得到的数据看起来像这样:

+--------+------+-----------+-----------+-------------------+
| ITEMNO | Desc | QTYONHAND | UnitsSold | UNIT_LESS_3MONTHS |
+--------+------+-----------+-----------+-------------------+
| 1      | TEST | 1145      | 1         | No                |
+--------+------+-----------+-----------+-------------------+
| 1      | TEST | 1145      | 2         | No                |
+--------+------+-----------+-----------+-------------------+
| 1      | TEST | 1145      | 3         | No                |
+--------+------+-----------+-----------+-------------------+
| 1      | TEST | 1145      | 6         | No                |
+--------+------+-----------+-----------+-------------------+
| 1      | TEST | 1145      | 20        | No                |
+--------+------+-----------+-----------+-------------------+
| 1      | TEST | 1145      | 23        | No                |
+--------+------+-----------+-----------+-------------------+
| 1      | TEST | 1145      | 30        | No                |
+--------+------+-----------+-----------+-------------------+
| 1      | TEST | 1145      | 141       | No                |
+--------+------+-----------+-----------+-------------------+

理想情况下,我希望每个商品代码一行。

示例:

+--------+------+-----------+-----------+-------------------+
| ITEMNO | Desc | QTYONHAND | UnitsSold | UNIT_LESS_3MONTHS |
+--------+------+-----------+-----------+-------------------+
| 1      | TEST | 1145      | 226       | No                |
+--------+------+-----------+-----------+-------------------+

我认为发生这种情况的原因是因为“ SalesHistory”中的数据处于发票级别,并且由于诸如客户等的详细信息不同而没有区别。

这是我正在寻找的可能的方式?

我感谢能帮助您的人:)


更新2:40 pm

我已经修改了代码,并得到了更多我想要的代码:

select distinct ICILOC.ITEMNO,ICITEM.[Desc],max(ICILOC.QTYONHAND)as 'SOH',sum(UnitsSold) as '90DAYSALES',
case
when max(ICILOC.QTYONHAND) < sum(UnitsSold) then 'Yes' Else 'No'
end as 'UNIT_LESS_3MONTHS'
from ICILOC
inner join ICITEM on ICILOC.ITEMNO = ICITEM.ITEMNO
inner join ICITEMO on ICILOC.ITEMNO = ICITEMO.ITEMNO
inner join Datawarehouse.dbo.Sales_History on ICILOC.ITEMNO COLLATE DATABASE_DEFAULT = Sales_History.ItemCode COLLATE DATABASE_DEFAULT
where OPTFIELD = 'PG1' and VALUE = 'N' and Office = 'AU' and TranDate >= DATEADD(DAY, -90, GETDATE()) and LOCATION = 'M' and INACTIVE = '0'
group by ICILOC.ITEMNO,ICITEM.[Desc]

但是我遇到了另一个障碍。

我希望看到所有属于以下情况的物品:

select distinct ICILOC.ITEMNO,ICILOC.QTYONHAND
from ICILOC
inner join ICITEMO on ICILOC.ITEMNO = ICITEMO.ITEMNO
where OPTFIELD = 'PG1' and VALUE = 'N'

即使这些skus没有完成销售

0 个答案:

没有答案