【问题标题】:query to Get sum of two different items that is mapped onto same code查询获取映射到相同代码的两个不同项目的总和
【发布时间】:2021-07-22 09:27:51
【问题描述】:

我有这张房间的库存表:

dtm hotelid roomcode intqty
2000-01-04 23 svr 9
2000-01-04 23 ovb 9

这是我的映射表:

hotelid roomcode1 roomcode2 externalroom
23 svr ovb 023

我正在尝试在上面的库存表中获取同一日期两个房间的 intqty 总和: 这是我到目前为止所拥有的:

select
    a.dtm as InvDate,
    a.intResortID as ResortId,
    a.strRoomType as RoomType,
    sUM(a.intQty) as InvCount,
    am.externalRoomId
from
    dbo.tblAvailable c
    join dbo.tblAvailable a on a.dtm = c.dtm
       and a.intResortID = c.intResortID
       and a.strRoomType = c.strRoomType
    join dbo.tblResorts r on r.intResortID = a.intResortID
    join bbtest.externalResortMap arm on arm.ResortID = a.intResortID
    join bbtest.externalRoomMap am on am.RoomId = a.strRoomType
group by
    a.dtm,
    a.intResortID,
    a.strRoomType,
    a.intQty,
    am.externalRoomId
order by
    invDate;

预期结果是:

Invdate ResortId RoomType InvCount externalRoomId
2000-01-04 23 svr 18 023

查询输出:

Invdate ResortId RoomType InvCount externalRoomId
2000-01-04 23 svr 9 023
2000-01-04 23 ovb 9 023

【问题讨论】:

  • 预期结果是什么?
  • 映射表的名称是什么?你的房间桌子是哪一张?
  • 我已经添加了预期的结果@Squirrel
  • 映射表名是bbtest.externalRoomMap @eshirvana主表是第一个tblAvailable
  • 你为什么要自己加入tblAvailable

标签: sql sql-server-2008 stored-procedures mapping


【解决方案1】:

不知道你为什么要加入 tblAvailable 两次,但如果我没有犯任何错误,这就是你需要做的:

select
    a.dtm as InvDate,
    a.intResortID as ResortId,
    am.RoomId_1 as RoomType,
    sum(a.intQty) as InvCount,
    am.externalRoomId
from
    dbo.tblAvailable a 
    join dbo.tblResorts r on r.intResortID = a.intResortID
    join bbtest.externalResortMap arm on arm.ResortID = a.intResortID
    join bbtest.externalRoomMap am 
       on a.strRoomType in (am.RoomId_1 ,am.RoomId_2)
group by
    a.dtm,
    a.intResortID,
    am.RoomId_1,   
    am.externalRoomId
order by
    invDate;

【讨论】:

  • 感谢它所做的是,如果 am.RoomId_2 InvCount 也可以添加到 am.RoomId_1 InvCount 中,它会在最终结果中获得 am.RoomId_2
  • @steifmaster 可能缺少类似 hotelid 的条件,( ... and a.hotelid = am.hotelid ) ,显示我的查询输出
  • 我在问题标题的底部添加了输出:查询输出:@eshirvana
  • 哦,好的,将 strRoomType 替换为 RoomId_1 应该没问题,请参阅更新的 asnwer
  • 似乎您也不需要加入 bbtest.externalResortMap ,我不确定它是否有任何过滤目的。如果没有,您可以删除该加入
猜你喜欢
  • 1970-01-01
  • 2019-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-19
  • 2013-12-30
  • 2012-11-28
  • 1970-01-01
相关资源
最近更新 更多