1

私のクエリは次のようになります

SELECT `OFFER_ASSIGNED_TO`,
(CASE WHEN `OFFER_ASSIGNED_TO` IN (SELECT GROUP_CONCAT(`EMP_ID` SEPARATOR ',') FROM `f_employee_master` WHERE (`HEAD_OF_EMP`=13 OR `SUPERVISER_ADMIN`=13) AND is_active='Y') THEN 'Y' ELSE 'N' END) HI
FROM f_offer_master

WHERE fy_id=6

このような結果で

OFFER_ASSIGNED_TO   HI
              13    N
              42    N
              13    N
              25    N
              45    N
              25    N

次のクエリの結果:

SELECT GROUP_CONCAT(`EMP_ID` SEPARATOR ',') FROM `f_employee_master` WHERE (`HEAD_OF_EMP`=13 OR `SUPERVISER_ADMIN`=13) AND is_active='Y'

is=5,8,9,10,20,21,22,25,29,33,34,35,41

そして、クエリを次のように書くと:

SELECT `OFFER_ASSIGNED_TO`,
(CASE WHEN `OFFER_ASSIGNED_TO` IN (5,8,9,10,20,21,22,25,29,33,34,35,41) THEN 'Y' ELSE 'N' END) HI
FROM f_offer_master

WHERE fy_id=6

私は結果を得る:

OFFER_ASSIGNED_TO   HI
              13    N
              42    N
              13    N
              25    Y
              45    N
              25    Y

それは実際には正しい結果です。

しかし、最初のクエリで正しい結果が得られないのはなぜですか。

4

1 に答える 1