日安。我加入到库存表的基础上,具体日期,商店和文章。连接似乎花费了太长时间。
只有一些商店会有一些商品。第一件商品只在A店有售,在B店没有。
我事先知道我查询的是商店A中的文章1和商店B中的文章2,因为这是已售出的商品。
而不是查询每个商店中两个商品的库存,我如何才能加快查询速度,我可以只连接特定的组合A1,B2,是否可以在FROM table中组合两列?谢谢
Q3_SOH AS (
SELECT
CONCAT(Article,"|",Site,"|",Calendar_Day) AS ID,
Site,
Article,
SOH_Cost,
SOH_Qty_EA,
Calendar_Day,
FROM
`gcp-table`
WHERE
Calendar_Day BETWEEN DATE_ADD(startDate, INTERVAL -1 day) AND endDate
AND Site IN (
SELECT DISTINCT Site
FROM Q1)
AND Article IN (
SELECT DISTINCT Article
FROM Q1))嗨,谢谢你的帮助,非常聪明。我正在使用GCP bigquery,这些部分是WITH的一部分,Q1获取销售,Q3用于手头的库存。
然后连接和编写计算字段就相对容易了。这个SOH表是一个巨大的数据库。以这种方式加入似乎并不是一种进步,因为我仍然将所有的文章加入所有的商店。我相信所有的商店里都有商品,但大多数商店的数量都是零。我们可以多次使用同一篇文章。我可以写这样的东西吗?
in Q1 CONCAT(Site, Article) as ID
SELECT
site, article, soh_cost, soh_qty, date,
concat(site, article) AS ID
FROM 'gcp-b'
WHERE
concat(site, article) in DISTINCT(Q1.ID)原始似乎是最快的。所用的时间最短。
发布于 2021-09-30 02:15:11
您可以使用连接来实现相同的效果
SELECT
CONCAT(Article,"|",Site,"|",B.Calendar_Day) AS ID,
B.Site,
B.Article,
B.SOH_Cost,
B.SOH_Qty_EA,
B.Calendar_Day
FROM `gcp-table` as B
JOIN Q1 as QS ON B.Site = QS.Site
JOIN Q1 as QA ON B.Article = QA.Article
WHERE Calendar_Day BETWEEN DATE_ADD(startDate, INTERVAL -1 day) AND endDate请注意,如果站点或文章在Q1中多次出现,请这样做:
SELECT
CONCAT(Article,"|",Site,"|",B.Calendar_Day) AS ID,
B.Site,
B.Article,
B.SOH_Cost,
B.SOH_Qty_EA,
B.Calendar_Day
FROM `gcp-table` as B
JOIN (SELECT DISTINCT SITE FROM Q1) as QS ON B.Site = QS.Site
JOIN (SELECT DISTINCT ARTICLE FROM Q1) as QA ON B.Article = QA.Article
WHERE Calendar_Day BETWEEN DATE_ADD(startDate, INTERVAL -1 day) AND endDatehttps://stackoverflow.com/questions/69385257
复制相似问题