我有一个 SQL 视图,据我了解,它试图获取最新的发票日期以及该发票日期的年月组合。然后使用这些值计算该月的数量。
我的 SQL 知识是基本的,我不确定这个人为什么会做这部分:
MAX(CONVERT(varchar(3), InvoiceDate, 101) + CONVERT(varchar(4),
YEAR(InvoiceDate))) AS YearMonth
其余的代码,包括 TOP(100) PERCENT 部分等,我很满意。
我不确定有问题的部分是否是逻辑错误,或者它是否有一些 SQL 或业务原因,因为在某些情况下它与 Max Invoice Date 完全不同。
完整的 SQL 表达式如下:
SELECT TOP (100) PERCENT
MAX(InvoiceDate) AS MaxInvoiceDate,
StockCode, Warehouse,
MAX(CONVERT(varchar(3), InvoiceDate, 101) + CONVERT(varchar(4), YEAR(InvoiceDate))) AS YearMonth
FROM dbo.ArTrnDetail
GROUP BY StockCode, Warehouse
HAVING (Warehouse = 'CS') OR
(Warehouse = 'PS') OR
(Warehouse = 'DS') OR
(Warehouse = 'JS') OR
(Warehouse = 'JN')
ORDER BY MaxInvoiceDate DESC
还有一个可能有问题的输出:
MaxInvoiceDate | StockCode | Warehouse | YearMonth
----------------------------------------------------------------
2013-08-21 00:00:00.000 | ACH045 | PS | 12/2012