Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
グループ単位で、ある値の存在有無を判別し、重複しないIDを取得したい。
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30227#CommentId82734
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
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│ ┃
┗━━━┷━━━━━━━━━━━┛