0

これは私の最初のクエリです:

select 
CASE WHEN a.TO_WG_ID is null 
and a.CREATED_DATE_TIME = 
(select min(b.created_date_time) from ymtn.message b 
where b.thread_id = a.thread_id) THEN 1 ELSE 0
END AS "Created"
from ymtn.MESSAGE a 
left join YMTN.WORKGROUP b
ON a.FROM_WG_ID=b.WORKGROUP_ID
where b.WORKGROUP_ID='1STOP_PROCESS'

1 と 0 がたくさんある 1 つの列が得られます。求めているのは合計だけです.1691 などの数字だけです。case ステートメントの前に SUM を配置すると、次のエラーが発生します: Msg 130, Level 15, State 1, Line 5 Cannot perform an aggregate function on an expression集計またはサブクエリを含む。では、これを行うにはどうすればよいですか?このクエリで動作するようにしました:

select count(CREATED_DATE_TIME) as 'Created'
from ymtn.MESSAGE a
LEFT JOIN YMTN.WORKGROUP b
ON a.FROM_WG_ID=b.WORKGROUP_ID
where CREATED_DATE_TIME=(SELECT MIN(b.CREATED_DATE_TIME) FROM YMTN.MESSAGE b WHERE
 b.THREAD_ID = a.THREAD_ID)
and a.TO_WG_ID is null
and b.WORKGROUP_ID='1STOP_PROCESS'

ただし、ケースステートメントで機能させ、ネストされた選択をWHERE句に移動する必要はありません。

4

1 に答える 1