m0_46532117 2022-03-08 13:52 采纳率: 100%
浏览 46
已结题

这段SQL语句的各个意思?

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图

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

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

语句中的各个意思

  • 写回答

4条回答 默认 最新

  • £漫步 云端彡 2022-03-08 14:24
    关注

    从代码中能看到的意思如下:
    总共分为内外两个查询,
    先看内部查询:从关联表中筛选过查询条件,筛选完之后根据分组字段分组,然后(排序字段1)排序,查询出字段(字段2),生成新的结果表。
    外部结构的意思是:在结果表中再排序(排序字段2),查询出字段(字段1)最后展示结果。
    注:其中的AS后表示起的别名,ON后面的条件是两表之间的关系条件,IN后是属性包含的值,AND的是关联词(并且),OR是关联词(或者),IS NULL是不为空。
    具体干了啥内容,就要看你表存储的是什么?条件是什么情况下?业务是什么?这就没有办法帮你解析了。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 3月17日
  • 已采纳回答 3月9日
  • 创建了问题 3月8日