SQL serverを使用しています。
列名に
患者ID、入院日、薬剤投与日、単位数
があります。
(患者IDは同じIDが複数あります:投与日が異なるため)
やりたいことは、
1 1患者IDにつき1行に変換にした上で。
患者ID、入院日、合計薬剤投与単位
に変換。
↑ここまではなんとかできました。
2 上記に「入院日から3日以内の薬剤投与単位を追加」したいです。
(「0」になるIDもあります)
入院日 + 2日 の変数を作成して、その範囲内に「薬剤投与日」が含まれている場合、単位数を合計する、、、みたいな感じなのかと思っているのですが、うまくいきません。
スクリプトは何回かに分けても構いませんので、やり方をご存知の方がいらっしゃいましたら、ご教授ください。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
確実に患者ID毎の入院日がすべて同じにできているなら、次のSELECT文で大丈夫です。
SELECT
患者ID
,入院日
,SUM(単位数) AS 合計薬剤投与単位
,(SELECT
COALESCE(SUM(単位数),0)
FROM tbl
WHERE 患者ID=x.患者ID
AND DATEDIFF(DAY,入院日,薬剤投与日)<=2) AS "3日以内合計単位"
FROM tbl AS x
GROUP BY 患者ID,入院日
ORDER BY 患者ID
;
No.1
- 回答日時:
3日以内の投与がない場合は、SUM関数の結果はNULLとしたいですか?
それとも0としたいですか?
下記のSELECT文は、COALESCE関数で、0にしています。NULLにしたい場合は、COALESCE関数を外してSUM関数だけにしてください。
別名の先頭に半角または全角の数字(今回の場合は、3日〜)としましたが、この場合、必ず名前を"3日xxx"または[3日xxx]のように、「"」か[]で囲む必要があります。
SELECT
患者ID
,MIN(入院日) AS 入院日
,SUM(単位数) AS 合計薬剤投与単位
,(SELECT
COALESCE(SUM(単位数),0)
FROM tbl
WHERE 患者ID=x.患者ID
AND DATEDIFF(DAY,入院日,薬剤投与日)<=2) AS "3日以内合計単位"
FROM tbl AS x
GROUP BY 患者ID
ORDER BY 患者ID
;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報