0

有一个下表:

CREATE TABLE `foo`(
  `year` INT NOT NULL,
  `month` INT NOT NULL,
  `day` INT NOT NULL,
  `hour` INT NOT NULL,
  `minute` INT NOT NULL,
  `value` INT NOT NULL,
  PRIMARY KEY(`year`, `month`, `day`, `hour`, `minute`)
);

我想编写一个查询,它将为每条记录添加 2 列:date用于标准的单列数据表示并weekday指示一周中的日期数。

我努力了

SELECT
    `year`, `month`, `day`, `hour`, `minute`, `value`,
    substr('000' || year, -4) || '-' || substr('0' || month, -2) || '-' || substr('0' || day, -2) AS `date`,
    strftime('%w', `date`) AS `weekday`
FROM
    `foo`;

但这说

Error: no such column: date

这是一个插图。实际上,我在计算其他列时有更复杂的逻辑,并且需要重用这些计算的列来计算其他列,并且只需在每个需要它的值的地方复制整个代码看起来很可怕。

有没有办法可以在计算另一个列值时解决计算列值?

4

1 回答 1

1

使用子查询:

select f.*, strftime('%w', `date`) AS `weekday`
from (SELECT `year`, `month`, `day`, `hour`, `minute`, `value`,
             substr('000' || year, -4) || '-' || substr('0' || month, -2) || '-' || substr('0' || day, -2) AS `date`
      from foo
     ) t
于 2012-12-13T14:24:18.470 回答