投稿者 魔界の仮面弁士  (社会人) 投稿日時 2017/2/17 11:09:05
【案3】

WITH [CTE] AS (
SELECT DISTINCT [ID], [実施日], [業務内容] FROM [Aテーブル] WHERE [業務内容] = N'訪問')
SELECT [ID], [実施日], [業務内容] FROM CTE UNION
SELECT [ID], NULL, NULL FROM [Aテーブル] WHERE NOT EXISTS(
SELECT * FROM [CTE] WHERE [CTE].[ID] = [Aテーブル].[ID])
ORDER BY [ID]



【案4】

SELECT DISTINCT
  [Y].[ID], (
  SELECT [X].[実施日] + ' ' FROM [Aテーブル] [X]
   WHERE [X].[ID] = [Y].[ID]
   AND [X].[業務内容] = N'訪問'
   ORDER BY [X].[実施日]
   FOR XML PATH('')
  ) AS [実施日]
FROM [Aテーブル] Y



同一 ID で複数日の訪問があった場合、結果の ID が重複しないよう、
案4では下記のような結果を返すようにしてみました。

┏━━━┯━━━━━━━━━━━┓
┃ID    │実施日                ┃
┣━━━┿━━━━━━━━━━━┫
┃27-001│2016/04/05 2016/04/07 ┃
┠───┼───────────┨
┃27-002│                      ┃
┠───┼───────────┨
┃27-003│2016/06/05            ┃
┠───┼───────────┨
┃27-004│                      ┃
┗━━━┷━━━━━━━━━━━┛