【问题标题】:Returning query in a row wise format instead of column以行格式而不是列返回查询
【发布时间】:2021-10-19 07:22:41
【问题描述】:

目前我有 2 个表,一个列表表和一个日志表。通过以下查询,我试图获取特定日期的产品列表,并返回正确的输出。

with X as (
  select 
    l.*,
    (select status_from from logs where logs.refno = l.refno and logs.logtime >= '2021-10-01' order by logs.logtime limit 1) logstat
  from listings l
  where l.added_date < '2021-10-01'
)
, Y as (select X.*, ifnull(X.logstat, X.status) stat from X)
SELECT 
  status.text,
  COUNT(Y.id) AS c 
from status
left join Y on Y.stat = status.code
group by status.code, status.text;

这给出了这样的输出:

在这里,我已按 1 个日期过滤查询,在本例中为 2021-10-01。输出应如下所示:

Publish Action Let Sold Draft
0 3 0 1 1
0 2 0 1 2

Dbfiddle:https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=5e0b8d484a41ac9104d0fb002e7f9a3c

【问题讨论】:

    标签: mysql


    【解决方案1】:

    你可以试试下面的查询-

    with X as (
      select 
        l.*,
        (select status_from from logs where logs.refno = l.refno and logs.logtime >= '2021-10-02' order by logs.logtime limit 1) logstat
      from listings l
      where l.added_date between '2021-10-01 00:00:00' and '2021-10-02 00:00:00'      -- Start and end date range.
    )
    , Y as (select X.*, ifnull(X.logstat, X.status) stat20211001 from X)
    SELECT 
      added_date,
      COUNT(CASE WHEN status.text = 'Publish' THEN Y.id END) AS Publish,
      COUNT(CASE WHEN status.text = 'Action' THEN Y.id END) AS Action,
      COUNT(CASE WHEN status.text = 'Let' THEN Y.id END) AS Let,
      COUNT(CASE WHEN status.text = 'Sold' THEN Y.id END) AS Sold,
      COUNT(CASE WHEN status.text = 'Draft' THEN Y.id END) AS Draft
    from status
    join Y on Y.stat20211001 = status.code
    group by added_date;
    

    Demo.

    【讨论】:

    • 不,这不会给出正确的输出。我尝试将“2021-10-01”和“2021-10-02”作为您查询的日期,但它没有返回我在问题表中显示的输出
    • @JayModi,请尝试编辑后的代码。实际上,您将添加日期作为时间戳,而我仅将输入用作日期。
    • 我仍然无法得到正确的结果。你想把这个对话转移到chat.stackoverflow.com/rooms/238314/doubt-clearing
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多