我想在不重复的情况下组织我从以下查询获得的结果。我会在一秒钟内告诉你我的意思。
所以我现在有了这部分查询
select ownername,
hotel,
CASE
WHEN owner = salescashier and drinksales ='pepsi' then 'y'
else 'n'
END as pepsi,
CASE
WHEN owner = salescashier and drinksales ='mountaindew' then 'y'
else 'n'
END as mountainDew
FROM HotelDrinksOrders
GROUP BY ownername,hotel,totaldrinks,salescashier
这是我的表
ownername hotel drinksales salescashier
--------- ----- ---------- ------------
Carlos hotel1 pepsi Michael
Carlos hotel1 pepsi Michael
Carlos hotel1 pepsi Michael
Carlos hotel1 mountaindew Michael
Carlos hotel1 mountaindew Michael
Carlos hotel2 pepsi Michael
Carlos hotel2 mountaindew Carlos
Carlos hotel2 mountaindew Michael
Maria hotel3 mountaindew Maria
Maria hotel3 pepsi Maria
Maria hotel3 pepsi Maria
以下是我从查询中得到的信息,我得到的是我不需要的重复数据(酒店)
ownername hotel pepsi mountaindew
----- ------ ----- -----------
Carlos hotel1 N N
Carlos hotel1 N N
Carlos hotel2 N Y
Carlos hotel2 N N
Maria hotel3 N Y
Maria hotel3 Y N
这是我想要的数据, 我想按名称和酒店对它们进行分组,如果所有者名称与salescashier相匹配,则只有'Y'
ownername hotel pepsi mountaindew
----- ------ ----- -----------
Carlos hotel1 N N
Carlos hotel2 N Y
Maria hotel3 Y Y
我听说过某个地方我可以使用枢轴算子,但我不确定这对我的情况有什么用处。提前致谢
答案 0 :(得分:1)
从group by
中删除不需要的项目并使用聚合。 Y的排序时间晚于N,因此max
将正常运行。
select ownername,
hotel,
MAX(CASE
WHEN ownername = salescashier and drinksales ='pepsi' then 'y'
else 'n'
END) as pepsi,
MAX(CASE
WHEN ownername = salescashier and drinksales ='mountaindew' then 'y'
else 'n'
END) as mountainDew
FROM HotelDrinksOrders
GROUP BY ownername,hotel
答案 1 :(得分:0)
将DISTINCT关键字添加到SELECT语句中。