Visual Basic 中学校 掲示板 投稿の管理
タグのない投稿を抽出
統計
RSS
Visual Basic 中学校
投稿一覧
グループ単位で、ある値の存在有無を判別し、重複しないIDを取得したい。
この投稿へのリンク
https://keijiban.umayadia.com/ThreadDetail.aspx?ThreadId=30227#CommentId82733
この投稿の削除
削除パスワード
削除する
コメント本文
投稿者
魔界の仮面弁士
 (社会人)
投稿日時
2017/2/17 10:34:18
> ・テーブル名:Aテーブル
> ID:nchar(6)
> 実施日:nchar(10)
> 業務内容:nvarchar(20)
主キーはどれとどれの組み合わせですか?
> ★以下のようにIDのグループ単位で「訪問」が含まれるIDと「訪問」が含まれないIDを取得したい。
「訪問」限定なら、結果に業務内容の列は不要な気が。
> SQL文でどのよに書けば良いかご教示頂けますと大変たすかります。
【案1】
WITH
[ID_LIST] AS (SELECT DISTINCT [ID] FROM [Aテーブル]),
[DT_LIST] AS (SELECT [ID], [実施日] /*, [業務内容] */ FROM [Aテーブル] WHERE [業務内容] = N'訪問')
SELECT
[ID_LIST].[ID], [実施日] /* , [業務内容] */
FROM
[ID_LIST] LEFT JOIN [DT_LIST] ON [ID_LIST].[ID] = [DT_LIST].[ID]
ORDER BY
[ID_LIST].[ID]
【案2】
SELECT
[ID]
, MAX(CASE [業務内容] WHEN N'訪問' THEN [実施日] END) AS [実施日]
--, MAX(CASE [業務内容] WHEN N'訪問' THEN [業務内容] END) AS [業務内容]
FROM
[Aテーブル]
GROUP BY
[ID]
ORDER BY
[ID]
なお上記案は、元データに
INSERT INTO [Aテーブル] VALUES (N'27-001', N'2016/04/07', N'訪問')
が追加された場合、両者の結果が異なることに注意して下さい。