来自不同日期范围内的多个选择

发布于 2025-02-11 10:54:12 字数 383 浏览 4 评论 0原文

因此,我有以下查询

SELECT pn.no,
       pn.nome,
       SUM(qtt)
FROM pn,
     st
WHERE fdata > '2021-01-01'
  AND fdata < '2021-03-01'
  AND pn.ref = st.ref
  AND st.forref LIKE '%product%'
GROUP BY pn.no,
         pn.nome;

,使我返回01/01/2021和01/03/2021之间的结果。

我需要做的就是将其与今年同一时期进行比较。

如何一口气获得两个时期的结果?

So, I have the following query

SELECT pn.no,
       pn.nome,
       SUM(qtt)
FROM pn,
     st
WHERE fdata > '2021-01-01'
  AND fdata < '2021-03-01'
  AND pn.ref = st.ref
  AND st.forref LIKE '%product%'
GROUP BY pn.no,
         pn.nome;

That returns me the results between the 01/01/2021 and 01/03/2021.

What I need to do is compare this with the same period this year.

How can I get the results for both periods in one select?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

卸妝后依然美 2025-02-18 10:54:12

您可以将2022年的外部加入到2021年的子查询上,

以便您获得所有可能的产品

SELECT 
    COALESCE(p1.no,p2.no),
    COALESCE (p1.nome,p2.nome),
    CASE
        WHEN COALESCE (sum_qt1,0) > COALESCE (sum_qt2,0) THEN 'more'
        WHEN COALESCE (sum_qt1,0) < COALESCE (sum_qt2,0) THEN 'less'
        ELSE 'equal'
    END
FROM
    (SELECT 
        pn.no, pn.nome, SUM(qtt) sum_qt2
    FROM
        pn JOIN  st ON pn.ref = st.ref
    WHERE
        fdata > '2022-01-01'
            AND fdata < '2022-03-01'            
            AND st.forref LIKE '%product%'
    GROUP BY pn.no , pn.nome) p1
        FULL OUTER  JOIN
    (SELECT 
        pn.no, pn.nome, SUM(qtt) sum_qt1
    FROM
        pn JOIN st ON pn.ref = st.ref
    WHERE
        fdata > '2021-01-01'
            AND fdata < '2021-03-01'
            AND st.forref LIKE '%product%'
    GROUP BY pn.no , pn.nome) p2 ON p1.no = p2.no

you can FULL OUTER JOIN 2022 to the subquery of 2021 on product number

So you can get all possible products

SELECT 
    COALESCE(p1.no,p2.no),
    COALESCE (p1.nome,p2.nome),
    CASE
        WHEN COALESCE (sum_qt1,0) > COALESCE (sum_qt2,0) THEN 'more'
        WHEN COALESCE (sum_qt1,0) < COALESCE (sum_qt2,0) THEN 'less'
        ELSE 'equal'
    END
FROM
    (SELECT 
        pn.no, pn.nome, SUM(qtt) sum_qt2
    FROM
        pn JOIN  st ON pn.ref = st.ref
    WHERE
        fdata > '2022-01-01'
            AND fdata < '2022-03-01'            
            AND st.forref LIKE '%product%'
    GROUP BY pn.no , pn.nome) p1
        FULL OUTER  JOIN
    (SELECT 
        pn.no, pn.nome, SUM(qtt) sum_qt1
    FROM
        pn JOIN st ON pn.ref = st.ref
    WHERE
        fdata > '2021-01-01'
            AND fdata < '2021-03-01'
            AND st.forref LIKE '%product%'
    GROUP BY pn.no , pn.nome) p2 ON p1.no = p2.no
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文