これは、MSSQL の場合とまったく同じではありません。ただし、これを行うMySQLフレーバーがあることは知っています
declare @tempTable TABLE (dt_timeOfProgram datetime, str_name varchar(10));
insert into @tempTable values
('2003-10-20 17:00', 'Factor'),
('2003-10-21 17:00', 'Factor'),
('2003-10-22 17:00', 'Factor'),
('2003-10-20 19:00', 'Form'),
('2003-10-21 14:00', 'Factor');
select
REPLACE(REPLACE(REPLACE(dow, '</dow><dow>', ','), '<dow>',''),'</dow>', '') as DOW
, [time]
, [showName]
from ( select distinct
CAST(dt_timeOfProgram as time) as [time],
str_name [showName],
( SELECT DATENAME(dw, t1.dt_timeOfProgram) as [dow]
FROM @tempTable t1
where t1.str_name=t2.str_name
and CAST(t1.dt_timeOfProgram as time) = CAST(t2.dt_timeOfProgram as time)
order by t1.dt_timeOfProgram
for XML PATH('')) [dow]
from @tempTable t2) as t
そして、ここに結果セットがあります
Tuesday 14:00:00.0000000 Factor
Monday,Tuesday,Wednesday 17:00:00.0000000 Factor
Monday 19:00:00.0000000 Form
これはかなり雑な作業ですが。ライブアプリケーションでこれを行うことは決してありません。このロジックは、db ではなくビジネス ロジックによって処理されます。
一般に、データベース リソースは LEASE スケーラブルです。したがって、最終的には、それらをできるだけ使用しないようにする必要があります。
幸運を