【发布时间】:2021-06-14 08:05:17
【问题描述】:
我在 sql (postgresql) 中有 2 个表
tbl1:
| dates | roomid | stok |
|---|---|---|
| 2021-03-15 | A01 | 3 |
| 2021-03-16 | A01 | 3 |
| 2021-03-17 | A01 | 3 |
tbl2:
| bookingcode | startdate | enddate | roomid |
|---|---|---|---|
| B001 | 2021-03-15 | 2021-03-17 | A01 |
我的语法是这样的
select dates, tbl1.roomid,
case
when dates between startdate and enddate - integer '1' then stok -1
else stok
end stok
from tbl1
join tbl2
on tbl1.roomid = tbl2.roomid order by dates asc
当预订数量为一个(tbl2)时,它匹配这样的结果。结果是正确的
| dates | roomid | stok |
|---|---|---|
| 2021-03-15 | A01 | 2 |
| 2021-03-16 | A01 | 2 |
| 2021-03-17 | A01 | 3 |
但是当booking是2的时候,是这样的(tbl2)
| bookingcode | startdate | enddate | roomid |
|---|---|---|---|
| B001 | 2021-03-15 | 2021-03-17 | A01 |
| B002 | 2021-03-15 | 2021-03-17 | A01 |
结果是这样的,结果不合适
| dates | roomid | stok |
|---|---|---|
| 2021-03-15 | A01 | 2 |
| 2021-03-15 | A01 | 2 |
| 2021-03-16 | A01 | 2 |
| 2021-03-16 | A01 | 2 |
| 2021-03-17 | A01 | 3 |
| 2021-03-17 | A01 | 3 |
预订2时我想要的结果是这样的
| dates | roomid | stok |
|---|---|---|
| 2021-03-15 | A01 | 1 |
| 2021-03-16 | A01 | 1 |
| 2021-03-17 | A01 | 3 |
谁能提出解决方案?
【问题讨论】:
-
如果你不想要mysql的答案,不要用它来标记问题。
-
好吧,先生,我更正了标签
标签: sql postgresql