首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sql查询变更

Sql查询变更
EN

Stack Overflow用户
提问于 2014-10-28 22:39:19
回答 1查看 99关注 0票数 0

我希望这个查询能够处理我的表,而不仅仅是示例数据。

代码语言:javascript
运行
复制
Declare @Date char(8) = '20141013'
;
WITH cte as
(
    SELECT *
    FROM -- use your table name instead of the VALUES construct
    (VALUES
    ('09:00:00','12:30:00' ,'7-3', '20140919'),
    ('15:00:00','17:00:00' ,'7-2', '20141013'),
    ('14:00:00','16:00:00' ,'7-3', '20140919')) x(EventStart , EventEnd,Rooms, DayStarts)
), cte_Days_Rooms AS
-- get a cartesian product for the day specified and all rooms as well as the start and end time     to compare against
(
    SELECT y.EventStart,y.EventEnd, x.rooms,a.DayStarts FROM 
    (SELECT @Date DayStarts) a
    CROSS JOIN
    (SELECT DISTINCT Rooms FROM cte)x
    CROSS JOIN
    (SELECT '09:00:00' EventStart,'09:00:00' EventEnd UNION ALL
     SELECT '22:00:00' EventStart,'22:00:00' EventEnd) y        
 ), cte_1 AS
-- Merge the original data an the "base data"
(
    SELECT * FROM cte WHERE DayStarts=@Date
    UNION ALL
    SELECT * FROM cte_Days_Rooms
), cte_2 as
-- use the ROW_NUMBER() approach to sort the data
(
    SELECT *, ROW_NUMBER() OVER(PARTITION BY DayStarts, Rooms ORDER BY EventStart) as pos
    FROM cte_1
)
-- final query: self join with an offest of one row, eliminating duplicate rows if a room is booked starting 9:00 or ending 22:00
SELECT c2a.DayStarts, c2a.Rooms , c2a.EventEnd, c2b.EventStart 
FROM cte_2 c2a
INNER JOIN cte_2 c2b on c2a.DayStarts = c2b.DayStarts AND c2a.Rooms =c2b.Rooms AND c2a.pos = c2b.pos -1
WHERE c2a.EventEnd <> c2b.EventStart
ORDER BY c2a.DayStarts, c2a.Rooms

我的表名为Events,这是我的数据库的样子:

代码语言:javascript
运行
复制
Event       EventStart  EventEnd    Days                Rooms   DayStarts
CISC 3660   09:00:00    12:30:00    Monday              7-3     9/19/2014   
MATH 2501   15:00:00    17:00:00    Monday:Wednesday    7-2     10/13/2014  
CISC 1110   14:00:00    16:00:00    Monday              7-3     9/19/2014   

这个查询可以很好地工作,并对查询中创建的数据执行它应该执行的操作。在查询的第6行,它说use your table name instead of the values construct,当我执行from [events]时,它给出一个错误,说Invalid object name 'Events'.,所以问题是我如何让查询从我的表中获取值。

EN

回答 1

Stack Overflow用户

发布于 2014-10-28 22:47:51

根据错误消息,您可能需要将模式name.Events。如果您登录的用户的默认模式不是事件所属的模式,那么它将不知道您引用的是哪个表。希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26611122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档