用于检索成人和子组合的包的SQL查询

时间:2017-06-12 11:45:58

标签: sql

create table hotelSupplier
(
        prod_id int,
        sku_id bigint,
        activity_name nvarchar(20),
        package nvarchar(20),
        adult binary(1),
        child binary(1),
        validation_date date,
        launch_date date,
        city nvarchar(10),
        est_units_per_day int
)

我必须编写一个查询来检索那些prod_id,包来自表,供应商根据城市,验证日期以及成人和儿童的结果给出结果。我试图解决它,但我被困在没有的情况下。作为供应商的成人和儿童案例没有。成人和儿童专栏。它需要首先检查是否为成人或儿童设置或取消设置特定的sku_id。然后必须将其与每天的估计单位进行比较,如果可用则必须打印。

alter procedure uspGetKlookDetails 
    @city nvarchar(10),
    @valid_date date,
    @no_of_adults int,
    @no_of_child int,
    @age int
AS
BEGIN
    SELECT * 
    FROM hotelSupplier 
    WHERE city = @city 
      AND validation_date < @valid_date
      AND est_units_per_day >= CASE
                                  WHEN adult = 1 THEN @no_of_adults
                                  WHEN child = 1 THEN @no_of_child
                               END
END
GO  

1 个答案:

答案 0 :(得分:0)

因为成人和儿童是二元的,所以他们只能是0或1,所以通过分组为ex。 prod_id这是你想要的东西之一,然后你使用sum()(如果你的sql平台允许你使用的这个未知的sql)你可以得到有多少成人和孩子:

select prod_id, sku_id, activity_name, package, 
sum(adult) as nrofadults, sum(child) as nrofchildren, 
validation_date, launch_date, city, est_units_per_day 
from hotelSupplier
group by prod_id