【发布时间】:2021-05-29 12:00:03
【问题描述】:
我有这个 sql 查询
Select parent_order_id,product_id,hub_id,cast(1- '0.05' * MONTHS_BETWEEN(SYSDATE(), order_processing_date)as unsigned) AS total_sum
FROM (select q1.parent_order_id, q1.product_id, q1.hub_id, q1.order_processing_date from (select o1.parent_order_id,
o2.product_id, o1.hub_id, o1.order_processing_date from licious.orders as o1 join licious.order_items as o2 on o1.order_id = o2.order_id
WHERE DATE(o1.order_processing_date) BETWEEN DATE(DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 90 day) )AND DATE(CURRENT_TIMESTAMP())
AND o1.status = "Delivered") as q1
join ((select o1.parent_order_id from licious.orders as o1 join licious.order_items as o2 on o1.order_id = o2.order_id
WHERE DATE(o1.order_processing_date) BETWEEN DATE(DATE_SUB(CURRENT_TIMESTAMP(), INTERVAL 90 day) )
AND DATE(CURRENT_TIMESTAMP()) AND o1.status = "Delivered" group by parent_order_id having count(parent_order_id > 1)
)) as q2 on q1.parent_order_id = q2.parent_order_id)
group by
parent_order_id,
product_id,
hub_id,
order_processing_date
order by
parent_order_id desc,
total_sum desc;
我收到错误,每个派生表都必须有自己的别名 我知道我需要使用别名,但我已经使用过它并且我不知道在哪里修改我的查询 任何人都可以检查整个查询并更新它。这将是一个很大的帮助。
Ps:我刚刚编辑了我的问题,因为前一个问题只是通过编写 UNSIGNED 而不是 int 解决了
【问题讨论】:
-
我在 SET o1.status = "Delivered" 上收到不同的错误。
-
实际上是因为当我将它粘贴到任何 sql 美化器中时,它会在 SET o1.status = "Delivered" 上给出错误,但是当我尝试在 sql 工作台上执行它时,它会在 select 语句中给我跨度>
-
我就是想不出正确的解决方案
-
SET 在此处无效,并且“我只是想不出正确的解决方案” - 您还没有描述您正在寻找的解决方案只是解决您的解决方案的问题。跨度>
-
好吧,所以你说的不是 SET o1.status = "Delivered" 我应该写 o1.status = "Delivered"