SELECT
tt.ItemCode AS ItemCode,
tt.ItemName AS ItemName,
tt.BatchNum AS BatchNum,
sum(tt.Quantity) AS Quantity,
tt.InvntryUom AS InvntryUom,
tt.WhsCode AS WhsCode,
tt. STATUS AS STATUS,
tt.StorageTime AS StorageTime
FROM
(
SELECT
T2.CODE
AS ItemCode,
T2.NAME
AS ItemName,
T1.LOT_INFO_LOT AS BatchNum,
T0.QTY_BASE_QTY AS Quantity,
T0.QTY_PACKAGE_NAME AS InvntryUom,
T1.LOT_INFO_ERP_CODE AS WhsCode,
T0.INV_TYPE AS STATUS,
now() AS StorageTime,
T0.ID
FROM
wms_inventory T0
LEFT JOIN wms_item_key T1 ON T0.SKU_ITEM_KEY_ID = T1.ID
LEFT JOIN wms_item T2 ON T2.ID = T1.ITEM_ID
LEFT JOIN wms_asn asn ON asn.CUSTOMER_BILL = T1.LOT_INFO_ASN_CUSTOMER_BILL
LEFT JOIN wms_bill_type billType ON asn.BILL_TYPE_ID = billType.ID
WHERE
QTY_BASE_QTY <> 0
AND T1.LOT_INFO_ERP_CODE IN (
101,
103,
104,
108,
201,
301,
302,
307,
412,
903
)
AND (
billType.ID IN (13, 14, 15, 16, 17)
OR (
billType.ID IN (12)
AND asn.BE_FEEDBACK = TRUE
)
OR billType.ID IS NULL
)
AND T2.LOT = 'Y'
AND T0.INV_TYPE = 'Normal'
GROUP BY
T2.CODE
,
T2.NAME
,
T1.LOT_INFO_LOT,
T0.QTY_BASE_QTY,
T0.QTY_PACKAGE_NAME,
T1.LOT_INFO_ERP_CODE,
T0.INV_TYPE,
T0.ID
ORDER BY
T2.CODE
,
T1.LOT_INFO_LOT
) tt
GROUP BY
tt.ItemCode,
tt.BatchNum,
tt.WhsCode
语句中的各个意思
从代码中能看到的意思如下:
总共分为内外两个查询,
先看内部查询:从关联表中筛选过查询条件,筛选完之后根据分组字段分组,然后(排序字段1)排序,查询出字段(字段2),生成新的结果表。
外部结构的意思是:在结果表中再排序(排序字段2),查询出字段(字段1)最后展示结果。
注:其中的AS后表示起的别名,ON后面的条件是两表之间的关系条件,IN后是属性包含的值,AND的是关联词(并且),OR是关联词(或者),IS NULL是不为空。
具体干了啥内容,就要看你表存储的是什么?条件是什么情况下?业务是什么?这就没有办法帮你解析了。
具体什么意思,要根据你的业务去理解。
你要知道里面用到了什么,比如求和函数sum()、子查询、连接查询、group by 分组等。
然后大概看下sql语句就行,sql不是自己写的,这么复杂的,没办法去理解具体意思。
这段sql里没看到有任何特殊的语法,关联几个表求个和而已,不知道你是哪里看不懂。
如果是问业务含义的话,应该没人比你内部人员更懂你自己公司的业务了吧?
我根据以往工作的经验,大概给你分析一下查玩意查的是啥