我正在寻找创建一个报告,该报告将显示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没有完成销售