【问题标题】:POSTGRESQL GROUP BY QUERYPostgreSQL 按查询分组
【发布时间】:2023-01-20 15:24:25
【问题描述】:

SELECT
    concat(
        EXTRACT(
            YEAR
            FROM
                "BEAUFTRAGUNG_DATUM"
        ),
        '-',
        TO_CHAR(
            EXTRACT(
                MONTH
                FROM
                    "BEAUFTRAGUNG_DATUM"
            ),
            'fm00'
        )
    ) AS "DATUM",
    CASE
        WHEN (
            "STATUS" in (
                '....', '...'
            )
        ) THEN 'OTHER'
        WHEN ("STATUS" = 'BESTELLT') THEN 'BESTELLT'
        WHEN ("STATUS" = 'VOR_PRODUKTION') THEN 'VOR_PRODUKTION'
    END AS "MODIFIED_STATUS",
    COUNT(*) AS "ANZAHL"
FROM
    PUBLIC."TXS"
WHERE
    "FLAG_POS" = '1'
GROUP BY
    "DATUM",
    "MODIFIED_STATUS"
ORDER BY
    "DATUM" ASC

这就是我所拥有的。

我想要这样

DATUM       OTHER     BESTELLT       VOR_PRODUKTION
2021-11     47        87             366
2022-01     1         0              0
2022-02     82        73             356

这样我就有了独特的日期。 提前致谢。 我用“JOINS”尝试了一些解决方案,但没有一个有效。 我希望你有任何想法......

【问题讨论】:

    标签: sql postgresql


    【解决方案1】:

    此查询应该能够使用给定的信息获得所需的结果:

    SELECT
        txs.DATUM,
        COALESCE(other.sum, 0) AS other,
        COALESCE(bestellt.sum, 0) AS bestellt,
        COALESCE(vor_produktion.sum, 0) AS vor_produktion
    FROM
        PUBLIC."TXS" txs
    LEFT JOIN (SELECT tsx2.DATUM, SUM(tsx2.ANZAHL) AS sum FROM PUBLIC."TXS" tsx2 WHERE tsx2.MODIFIED_STATUS = 'OTHER' GROUP BY tsx2.DATUM) other ON other.DATUM = txs.DATUM
    LEFT JOIN (SELECT tsx2.DATUM, SUM(tsx2.ANZAHL) AS sum FROM PUBLIC."TXS" tsx2 WHERE tsx2.MODIFIED_STATUS = 'BESTELLT' GROUP BY tsx2.DATUM) bestellt ON bestellt.DATUM = txs.DATUM
    LEFT JOIN (SELECT tsx2.DATUM, SUM(tsx2.ANZAHL) AS sum FROM PUBLIC."TXS" tsx2 WHERE tsx2.MODIFIED_STATUS = 'VOR_PRODUKTION' GROUP BY tsx2.DATUM) vor_produktion ON vor_produktion.DATUM = txs.DATUM
    GROUP BY txs.DATUM, other.sum, bestellt.sum, vor_produktion.sum
    

    在这里,我们将 3 列与子查询连接起来,并将 <null> 值替换为 0

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-03
      • 1970-01-01
      • 2015-06-12
      • 2013-02-17
      • 2020-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-07-05
      相关资源
      最近更新 更多