【问题标题】:how to Get my result according to picture如何根据图片获取我的结果
【发布时间】:2018-11-21 08:09:09
【问题描述】:

我有以下查询我想显示数据 fromCityId AND ToCityId 。假设乘客旅行fromCity伦敦toCity曼彻斯特。如何编写这样的查询,当我使用where 子句和in 时,它在fromcitytocity 中显示相同的值 预期结果如下图

      Select vh.VoucharId,fCity.CityName as FromCity, tCity.CityName as ToCity, InDate 
from VoucharHotel vh  
inner join City fCity on   vh.CityId = fCity.CityId  inner join City tCity on
 vh.CityId = tCity.CityId 
 where vh.InDate  between '11/15/2018 12:00:00 AM' and '11/16/2018 12:00:00 AM'   AND vh.CityId in (1,2)

  CREATE TABLE VoucharHotel (
        ID int IDENTITY(1,1) PRIMARY KEY,
        VoucharId Int ,
        CityId int,
        HotelId  int,
        InDate Datetime,
        OutDate Datetime
    );

    CREATE TABLE City (
        CityId int IDENTITY(1,1) PRIMARY KEY,
        CityName varchar(200),
    );
    insert into City Values('London')
    insert into City Values('Manchester')
    insert into City Values('Birmingham')
    insert into City Values('Leeds')

    CREATE TABLE HotelMaster (
        HotelId int IDENTITY(1,1) PRIMARY KEY,
        HotelName varchar(200),
    );
    insert into HotelMaster Values('London Hotel')
    insert into HotelMaster Values('Manchester Hotel')
    insert into HotelMaster Values('Birmingham Hotel')
    insert into HotelMaster Values('Leeds Hotel')

    Insert into VoucharHotel Values(22,1,1,'11/15/2018', '11/16/2018')
    Insert into VoucharHotel Values(22,2,2,'11/16/2018', '11/18/2018')
    Insert into VoucharHotel Values(22,1,1,'11/18/2018', '11/20/2018')

    Insert into VoucharHotel Values(23,2,2,'11/16/2018', '11/17/2018')
    Insert into VoucharHotel Values(23,4,4,'11/17/2018', '11/20/2018')
    Insert into VoucharHotel Values(23,2,2,'11/20/2018', '11/26/2018')

【问题讨论】:

  • 我在您的示例数据中没有看到任何VoucharId 24
  • 它的示例图片
  • 如何获取我想要的上图数据
  • 您是否需要相同 fromCity、toCity 和 inDate 的最大凭证 ID?
  • 我希望用户从城市用户旅行

标签: sql-server sql-server-2008 sql-server-2012 sql-server-2014


【解决方案1】:

您的起始表应该是 VoucharHotel 表上的连接,例如:

Select V1.VoucharId, V1.CityId, V2.HotelId  ,V1.InDate
from  VoucharHotel  V1
join VoucharHotel V2 on V1.VoucharId  = V2.VoucharId  and convert(date,V1.OutDate) = dateadd(day,-1,convert(date,V2.InDate ) )

从这里只需将连接添加到城市表并在您想要的日期进行过滤

【讨论】:

    猜你喜欢
    • 2019-08-03
    • 1970-01-01
    • 2020-09-07
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多