组织来自 Microsoft sql server 2008 的查询结果
Organizing query results from Microsoft sql server 2008
我想组织我从以下查询中获得的结果而不重复。我会在一秒钟内告诉你我的意思。
所以我现在有这部分查询
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
这是我的 table
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
这是我要的数据,
我想按名称和酒店对它们进行分组,只有 'Y' 如果所有者名称与收银员相匹配
ownername hotel pepsi mountaindew
----- ------ ----- -----------
Carlos hotel1 N N
Carlos hotel2 N Y
Maria hotel3 Y Y
我听说在某个地方可以使用数据透视运算符,但我不确定这对我的情况有何影响。提前致谢
将 DISTINCT 关键字添加到您的 SELECT 语句中。
从 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
我想组织我从以下查询中获得的结果而不重复。我会在一秒钟内告诉你我的意思。
所以我现在有这部分查询
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
这是我的 table
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
这是我要的数据, 我想按名称和酒店对它们进行分组,只有 'Y' 如果所有者名称与收银员相匹配
ownername hotel pepsi mountaindew
----- ------ ----- -----------
Carlos hotel1 N N
Carlos hotel2 N Y
Maria hotel3 Y Y
我听说在某个地方可以使用数据透视运算符,但我不确定这对我的情况有何影响。提前致谢
将 DISTINCT 关键字添加到您的 SELECT 语句中。
从 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