私はT-sqlを使用しています。SQL について助けが必要です。私は IN ステートメントを使用しています。例として 1,32,21 を探します。一部のレコードには 2 つの数字しかありません。リストにある場合は「YES」、「NO」を返すことができます。そうでない場合は代わりに、「はい」の場合は数を数えます。
アップデート!!
id firstName uid value name amount typeofthing
161 sture 10470 1 Engineer Officer Class 1 1 certificate
444 kumba 10472 1 Engineer Officer Class 1 3 certificate
これが私のデータです!ご覧のとおり、 UID 10470 を持つユーザー
は 1 つの証明書しか保持していません。私が達成したいのは、このようにデータに新しい行を追加することです
id firstName uid value name amount typeofthing HasorNot
161 sture 10470 1 Engineer Officer Class 1 1 certificate YES
161 sture 10470 32 Engineer Officer Class 2 1 certificate NO
161 sture 10470 21 Engineer Officer Class 3 1 certificate NO
そして、その量は、各タイプの YES:es の量にカウントされます。彼らが持っていないコース/証明書の名前を取得したいですか?私が使用するSQLは以下です。ありがとう
select
tuc.id, tu.firstName, tuc.uid, tuc.value, tc.name,
count(tuc.value) over (PARTITION BY tuc.uid) as 'amount', 'certificate' as 'typeofthing'
from
t_user_certificates tuc, t_certificates tc, t_users tu
where
tuc.[value] IN (1,32,21)
AND tuc.value = tc.id
AND tu.id = tuc.uid
union
select
tuc.id, tu.firstName, tuc.uid, tuc.value, tc.name,
count(tuc.value) over (PARTITION BY tuc.uid) as 'amount',
'courses' as 'typeofthing'
from
t_user_courses tuc, t_courses tc, t_users tu
where
tuc.[value] IN(2,16,21)
AND tuc.value = tc.id
AND tu.id = tuc.uid