【发布时间】:2017-04-15 17:27:00
【问题描述】:
我发现此查询可以很好地与 SQL 服务器一起使用。 所以我很难将它移植到 Access 数据库中。字段是相同的。
Rate_Start_Date = DateTime
Rate_End_Date = DateTime
Room_Type = char
Rate = Currency
Price_List_Code = Integer
但是,sql 语法超出了我的知识范围。 有人可以帮我重写一下,让它与 Access 数据库一起使用吗?
代码:
use MYDATABASE
DECLARE @StartDate DATETIME,
@EndDate DATETIME,
@RoomType VARCHAR(6),
@PriceListCode INT
;
SELECT @StartDate = :a2,
@EndDate = :a3,
@RoomType = :a1,
@PriceListCode = :a4
;
WITH
cteStayDates AS
(
SELECT RoomType = Room_Type,
StartDate = CASE WHEN Rate_Start_Date < @StartDate THEN @StartDate ELSE Rate_Start_Date END,
EndDate = CASE WHEN Rate_End_Date > @EndDate THEN @EndDate ELSE Rate_End_Date END,
Rate
FROM dbo.Room_Rates
WHERE @RoomType = Room_Type
AND @StartDate < Rate_End_Date
AND @EndDate >= Rate_Start_Date
AND @PriceListCode = PRICE_LIST_CODE
)
SELECT RoomType, StartDate, EndDate, Rate,
Days = DATEDIFF(dd,StartDate,EndDate)
+ CASE WHEN EndDate = @EndDate THEN 0 ELSE 0 END
FROM cteStayDates
ORDER BY StartDate
;
【问题讨论】:
-
请从这段代码中提取查询文本,将其添加到您的问题中并描述其背后的逻辑。
-
就像我说的,这个查询超出了我的知识范围。我不知道要提取什么。逻辑是获取选定时段的房间类型价格。
-
@IvanStarostin 的意思是——他说得很对——你应该说明你的 SQL 查询的文本,而不是把它显示为一系列
UniQuery1.SQL.Adds,因为你如何构造查询是无关紧要,UniQuery1.SQL.Adds 本身没有添加任何内容,只会让您的 q 难以阅读。
标签: sql sql-server delphi ms-access