基本的に、いくつかの結果を比較しようとするのは少し難しいです
(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 )
3 つのレコードが返されます (順不同):
1
2
10
また
1
10
2
基本的に、受信 sproc 変数 @Dish_1、@Dish_2、@Dish_3 に正確に 1、2、および 10 が含まれている場合、1 (True) を返します。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)