我在物品表中有许多可供出租的物品。我有一个跨国表格,显示我的项目表中每个项目的租赁历史记录。如果该项目当前未被租用,那么"可用性状态"专栏将说'关闭'。如果该项目正在租用"可用性状态"中的一个字段;专栏将说" ONRENT"。我想写一个查询,列出每个租赁项目并返回它们当前是否是" ONRENT" (不可用)或" CLOSED" (可用的)。我写了一个查询,返回的租约是" ONRENT"因为我的WHERE子句可以找到唯一包含" ONRENT"的行。不知道如何在"可用性状态"中的所有行返回可用项目。专栏说" CLOSED"这是我对ONRENT项目的成功查询。
select rl.[No_],
rl.[Manufacturer Code],
rl.[Model Code],
rl.[Availability Status],
rl.[Start Date],
rh.[Order Date],
rh.[No_],
rh.[Ship-to Name],
rh.[Ship-to Address]
from [LIVE$Rental Line]rl left outer join [LIVE$Rental Header]rh
on rl.[Document No_] = rh.[No_]
where rl.[Availability Status] = 'ONRENT'
and rl.[No_] not like 'SR%'
答案 0 :(得分:0)
SELECT distinct no, 'CLOSED' FROM table1 t1
WHERE EXISTS (SELECT * FROM table1 WHERE status = 'CLOSED' AND no = t1.no)
UNION
SELECT distinct no, 'OPEN' FROM table1 t2
WHERE NOT EXISTS (SELECT * FROM table1 WHERE status = 'CLOSED' AND no = t2.no)
我应该补充说,有很多方法可以解决这个问题,其中一些可能比这个问题更有效。
答案 1 :(得分:0)
如果您只是切换加入,
SELECT
rl.[No_],
rl.[Manufacturer Code],
rl.[Model Code],
COALESCE(rl.[Availability Status], 'CLOSED') [Availability Status],
rl.[Start Date],
rh.[Order Date],
rh.[No_],
rh.[Ship-to Name],
rh.[Ship-to Address]
FROM
[LIVE$Rental Header] rh
LEFT OUTER JOIN
[LIVE$Rental Line] rl
ON
rl.[Document No_] = rh.[No_]
AND
rl.[Availability Status] = 'ONRENT'
WHERE
rl.[No_] not like 'SR%';
然后,您将获得所有[LIVE$Rental Header]
,您只会获得[LIVE$Rental Line]
相关行的'ONRENT'
数据,以及其他条件。< / p>