有一张表tjyd ,三个字段 统计月度 开始日期 结束日期, 有一张表zaixian_yiqi, 两个字段 BDate cusuan, 写一个查询,包含三个字段,统计月度 期初在线 期末在线 期初在线的值是bdate等于开始日期对应的cusuan值, 期末在线的值是bdate等于(结束日期+1)对应的cusuan值 如果结束日期为NULL,期末在线的值是bdate等于当前日期对应的醋酸值,数据库是mysql
时间: 2024-02-15 20:04:07 浏览: 64
您好,根据您的要求,可以使用以下 SQL 查询语句来实现:
```
SELECT
tjyd.统计月度,
zaixian_yiqi_cusuan_1.cusuan AS 期初在线,
zaixian_yiqi_cusuan_2.cusuan AS 期末在线
FROM
tjyd
LEFT JOIN
zaixian_yiqi AS zaixian_yiqi_cusuan_1
ON zaixian_yiqi_cusuan_1.BDate = tjyd.开始日期
LEFT JOIN
zaixian_yiqi AS zaixian_yiqi_cusuan_2
ON zaixian_yiqi_cusuan_2.BDate = DATE_ADD(tjyd.结束日期, INTERVAL 1 DAY)
OR (tjyd.结束日期 IS NULL AND zaixian_yiqi_cusuan_2.BDate = CURDATE())
```
这个查询语句使用了左连接(LEFT JOIN)和日期加减函数(DATE_ADD、CURDATE)来实现您的要求。其中,使用了两个表别名(zaixian_yiqi_cusuan_1 和 zaixian_yiqi_cusuan_2)来分别表示起始日期和结束日期对应的醋酸值。
相关问题
有一张表tjyd ,三个字段 统计月度 开始日期 结束日期, 有一张表zaixian_yiqi, 两个字段 BDate cusuan, 写一个查询,包含三个字段,统计月度 期初在线 期末在线 期初在线的值是bdate等于开始日期对应的cusuan值, 期末在线的值是bdate等于(结束日期+1)对应的cusuan值 数据库是mysql
可以使用子查询来实现这个查询:
```
SELECT
tjyd.统计月度,
(SELECT cusuan FROM zaixian_yiqi WHERE BDate = tjyd.开始日期) AS 期初在线,
(SELECT cusuan FROM zaixian_yiqi WHERE BDate = DATE_ADD(tjyd.结束日期, INTERVAL 1 DAY)) AS 期末在线
FROM
tjyd
```
这里使用了两个子查询来获取期初在线和期末在线的值,分别对应开始日期和结束日期+1的值。其中,DATE_ADD函数用于计算日期的加法,INTERVAL 1 DAY表示加上1天。
阅读全文