我有一定的困难,在尝试比较了一定的成效,基本的SQL Server +对输出进行比较的结果
(选择[DishId] FROM [Package_Set_Dish],其中[Package_Set_Id] = COALESCE((SELECT [SETID ] FROM [Package_Schedule_Set_Daily] WHERE [自动识别] = @PkSchSetId),(SELECT [SETID] FROM [Package_Schedule_Set_Weekly] WHERE [自动识别] = @PkSchSetId)
将返回3条记录(不按顺序):
1
2
10
或
1
10
2
基本上,如果传入SPROC变量@ Dish_1,@ Dish_2,@ Dish_3正好包含1,2和10中,我将返回1(真)。如果它包含1,2,2或1,10,10,它应该返回0.
显然,下面的查询不会返回所需的结果。谁能建议。谢谢。
SET @TempBit = (SELECT CASE WHEN
(@Dish_1 IN (SELECT [DishId] FROM [Package_Set_Dish] WHERE [Package_Set_Id]
= COALESCE((SELECT [SetId] FROM [Package_Schedule_Set_Daily]
WHERE [AutoId] = @PkSchSetId),
(SELECT [SetId] FROM [Package_Schedule_Set_Weekly] WHERE [AutoId] = @PkSchSetId)))
AND @Dish_2 IN (SELECT [DishId] FROM [Package_Set_Dish] WHERE [Package_Set_Id]
= COALESCE((SELECT [SetId] FROM [Package_Schedule_Set_Daily]
WHERE [AutoId] = @PkSchSetId)
, (SELECT [SetId] FROM [Package_Schedule_Set_Weekly] WHERE [AutoId] = @PkSchSetId)))
AND @Dish_3 IN (SELECT [DishId] FROM [Package_Set_Dish] WHERE [Package_Set_Id]
= COALESCE((SELECT [SetId] FROM [Package_Schedule_Set_Daily]
WHERE [AutoId] = @PkSchSetId)
, (SELECT [SetId] FROM [Package_Schedule_Set_Weekly] WHERE [AutoId] = @PkSchSetId)))
AND (SELECT [Date] FROM [Customer_Order_SwapSetDish]
WHERE [CustOrderId] = @CustOrderId) = @Date) THEN 1 ELSE 0 END AS BIT)