所以我有2张桌子照顾和客户,就像这样
client {
id,
name
}
caring {
id,
startDate,
endDate,
clientId
}
Run Code Online (Sandbox Code Playgroud)
我需要让所有在两个提供的日期之间至少有一天可用的客户,您可以看到我的屏幕截图作为参考.
截图我有两个客户端,我需要返回它们.如您所见,第一个客户在提供期间(16.5.-29.5.)之间有三个免费日(21.5.-23.5.),而第二个客户没有任何关怀期.
到目前为止,我尝试过这样的事情
SELECT * FROM client cl
WHERE cl.id NOT IN (SELECT clientId FROM caring
WHERE endDate >= CURDATE() AND endDate <= DATE_ADD(CURDATE(), INTERVAL 14 DAY))
Run Code Online (Sandbox Code Playgroud)
这个只返回没有照顾的客户.这部分是我需要的,因为此查询不包括我的屏幕截图中的第一个客户端.然后我尝试了下面的查询.
SELECT ca.startDate, ca.endDate, cl.firstName, cl.lastName
FROM caring ca
LEFT JOIN client cl on cl.id = ca.clientId
WHERE ca.startDate NOT IN (
SELECT endDate
FROM caring
) AND ca.startDate <= '2017-05-29' AND ca.endDate >= '2017-05-16'
Run Code Online (Sandbox Code Playgroud)
但我没有得到理想的结果.
任何想法我怎么能实现这一点,提前thx!
我试图了解具有COMP Usage子句的COBOL变量如何存储值.
我尝试了一个例子,如下所示
01 VAR14 PIC S9(5) USAGE COMP.
MOVE 12345 TO VAR14
DISPLAY VAR14
Run Code Online (Sandbox Code Playgroud)
在SPOOL中,价值VAR14即将到来0000012345.
S9(5) COMP根据手册大小是4个字节,所以我的理解VAR14应该显示为000012345.二进制表示如下:
0000 0000 0000 0000 0011 0000 0011 0100?
Run Code Online (Sandbox Code Playgroud)
有人可以帮助理解产值0000012345吗?
谢谢