<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WHEN &#8211; スグブログ</title>
	<atom:link href="https://sugublog.org/tag/when/feed/" rel="self" type="application/rss+xml" />
	<link>https://sugublog.org</link>
	<description>ブログ運営について発信中</description>
	<lastBuildDate>Tue, 12 Mar 2024 02:10:30 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://sugublog.org/wp-content/uploads/2021/07/icon_20210703-min-150x150.png</url>
	<title>WHEN &#8211; スグブログ</title>
	<link>https://sugublog.org</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>SQLserverでCASEとWHENを使用して分岐する</title>
		<link>https://sugublog.org/sql-base-case-when/</link>
					<comments>https://sugublog.org/sql-base-case-when/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[suguru]]></dc:creator>
		<pubDate>Sun, 01 Oct 2023 11:45:12 +0000</pubDate>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[CASE]]></category>
		<category><![CDATA[THEN]]></category>
		<category><![CDATA[WHEN]]></category>
		<guid isPermaLink="false">https://sugublog.org/?p=5627</guid>

					<description><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/server_007-3-1024x768.jpg" class="webfeedsFeaturedVisual" /></p>プログラミングをするにあたって条件分岐は重要であり、極めるとやりたい事の幅がグッと広がります。 SQLにも条件分岐があります。CASEとWHENとTHENを使用します。updateなどでもcaseは使われます。 実際にS [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><img src="https://sugublog.org/wp-content/uploads/2021/07/server_007-3-1024x768.jpg" class="webfeedsFeaturedVisual" /></p>
<p><strong>プログラミングをするにあたって条件分岐は重要</strong>であり、極めるとやりたい事の幅がグッと広がります。</p>



<p><strong>SQLにも条件分岐</strong>があります。<strong><span class="swl-inline-color has-swl-deep-01-color">CASEとWHENとTHEN</span></strong>を使用します。updateなどでもcaseは使われます。</p>



<p>実際にSQLで<strong><span class="swl-inline-color has-swl-deep-01-color">CASEとWHENとTHEN</span></strong>を使用して結果をみてみましょう。</p>



<p>また<span class="swl-bg-color has-swl-deep-01-background-color">よくあるエラー</span>なども一緒にご紹介します。</p>


<div class="p-blogParts post_content" data-partsID="5030">
<p>windowsのプロンプトで使用できるbatやpythonやphpを使用して、業務効率化やWebサイトを作成しております。javaやシェルスクリプトなど、様々なプログラミングを行った実績ありの筆者です。</p>
</div>


<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9330904718533231"
     crossorigin="anonymous"></script>
<ins class="adsbygoogle"
     style="display:block"
     data-ad-format="autorelaxed"
     data-ad-client="ca-pub-9330904718533231"
     data-ad-slot="8455594968"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLでCASEとWHENとTHENを使用して分岐する</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" src="https://sugublog.org/wp-content/uploads/2021/07/pixta_77773496_M-1024x791.jpg" alt="選択する" class="wp-image-3635"/><figcaption class="wp-element-caption">Business person stand on road fork with hard and easy directions. Choice way isometric</figcaption></figure>
</div>


<p><strong>SQLでCASEを使用して条件分岐する時の基礎構文</strong>は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>CASE WHEN 評価 THEN 式
     WHEN 評価 THEN 式
     WHEN 評価 THEN 式
     ・
     ・
     ELSE 式
END</code></pre></div>



<p><strong>SQLのCASE</strong>を使用する時の決まりはあまりなく、<span class="swl-bg-color has-swl-deep-02-background-color">どこにも記述できる</span>事が強みです。</p>



<p>WHENの後に評価式をもってきて該当すればTHEN以降の式が返されます。</p>



<p>どれにも当てはまらない場合はELSEの後の式が返されます。</p>



<p class="is-style-icon_info">ELSEは省略可能ですが、すればELSE NULLになるので省略しない</p>



<p class="is-style-big_icon_caution">終了時にはENDを入れる（必須項目）</p>



<h2 class="wp-block-heading">SQLでCASEやWHENやTHENを使用してみる</h2>



<p>では実際に<strong>SQLでCASE</strong>を使用します。</p>



<p><span class="swl-marker mark_orange">使用用途としてSELECT文の結果を柔軟に表示変えする事</span>が多いです。</p>



<h3 class="wp-block-heading">実際にSQLを実行する環境説明</h3>



<p>以下のSQLテーブルがあるとします。</p>



<figure class="wp-block-image size-full is-style-border"><img decoding="async" width="354" height="320" src="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table_having.png" alt="SQLのテーブル_点数" class="wp-image-5623" srcset="https://sugublog.org/wp-content/uploads/2023/10/sql_base_table_having.png 354w, https://sugublog.org/wp-content/uploads/2023/10/sql_base_table_having-300x271.png 300w" sizes="(max-width: 354px) 100vw, 354px" /><figcaption class="wp-element-caption">SQLのテーブル_点数</figcaption></figure>



<h3 class="wp-block-heading">GROUP BY句にてグルーピングして点数の合計を出す</h3>



<p>チーム別の合計値を表示してみます。</p>



<p>以下のSQL文を見て下さい。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>※GROUP BY句にてグルーピングして点数の合計を出すSQL
SELECT `チーム名`,SUM(`点数`) FROM `点数` GROUP BY `チーム名`;</code></pre></div>



<p>結果は以下になります。</p>



<figure class="wp-block-image size-full is-style-desktop"><img decoding="async" width="171" height="95" src="https://sugublog.org/wp-content/uploads/2023/10/sql_case_sum.png" alt="SQLにてGROUP BY句でSUMの結果を表示" class="wp-image-5632"/><figcaption class="wp-element-caption">SQLにてGROUP BY句でSUMの結果</figcaption></figure>



<h3 class="wp-block-heading">CASEにてグルーピングして点数の合計を出す</h3>



<p>この結果ですがチーム名をカラムへ、合計点数をレコードに入れ替えしてみます。</p>



<p>以下のCASEのSQL文を見てください。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>SELECT SUM(CASE WHEN `チーム名` = &#39;チームA&#39; THEN `点数` ELSE 0 END) &#39;チームAの点数&#39;, 
       SUM(CASE WHEN `チーム名` = &#39;チームB&#39; THEN `点数` ELSE 0 END) &#39;チームBの点数&#39;,
       SUM(CASE WHEN `チーム名` = &#39;チームC&#39; THEN `点数` ELSE 0 END) &#39;チームCの点数&#39;
       FROM `点数`;</code></pre></div>



<h3 class="wp-block-heading">CASEにてグルーピングして点数の合計を出すSQLの説明</h3>



<p>今回は<span class="swl-marker mark_orange"><strong>集約関数の中にCASE</strong>を指定して、チーム別にグルーピング</span>しています。</p>



<p>判別式でチーム名のカラムが〇〇のときに点数を合計、当てはまらなければ０を指定しています。</p>



<p class="is-style-icon_info">ENDは必須なので忘れずに記入してます。</p>



<p>このSQLを実行してみます。</p>



<figure class="wp-block-image size-full is-style-desktop"><img decoding="async" width="266" height="49" src="https://sugublog.org/wp-content/uploads/2023/10/sql_case_sum_change.png" alt="SQLにてCASE句でSUMの結果" class="wp-image-5633"/><figcaption class="wp-element-caption">SQLにてCASE句でSUMの結果</figcaption></figure>



<p>普通にグルーピングした結果の縦横を変換して表示できています。</p>



<p class="has-border -border02">このように<span class="swl-marker mark_orange">SELECT文を自分の行いたい表示に変更する時に<strong>CASE</strong>を使用します。</span></p>



<script async="" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
<ins class="adsbygoogle ads" style="display:block; text-align:center;" data-ad-layout="in-article" data-ad-format="fluid" data-ad-client="ca-pub-9330904718533231" data-ad-slot="6086594686"></ins>
<script>
     (adsbygoogle = window.adsbygoogle || []).push({});
</script>



<h2 class="wp-block-heading">SQLでCASEのよくあるエラー</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="683" src="https://sugublog.org/wp-content/uploads/2021/06/shutterstock_1433996435-min-1024x683.jpg" alt="エラー" class="wp-image-2885"/></figure>
</div>


<p><strong>SQLのCASE</strong>を使用する時のよくある<span class="swl-bg-color has-swl-deep-01-background-color">エラー</span>は様々あります。</p>



<p>その中でも一番多いのは最後の「END」を忘れる事です。</p>



<p>先程のSQL文で最後の「END」を消して実行してみましょう！</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-file="エラーSQL構文" data-lang="SQL"><code>※エラーが出るSQL構文
SELECT SUM(CASE WHEN `チーム名` = &#39;チームA&#39; THEN `点数` ELSE 0) &#39;チームAの点数&#39;, 
       SUM(CASE WHEN `チーム名` = &#39;チームB&#39; THEN `点数` ELSE 0) &#39;チームBの点数&#39;,
       SUM(CASE WHEN `チーム名` = &#39;チームC&#39; THEN `点数` ELSE 0) &#39;チームCの点数&#39;
       FROM `点数`;</code></pre></div>



<p>上のSQLを実行してみましょう！</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-file="エラーメッセージ" data-lang="SQL"><code>#1064 - SQL構文エラーです。バージョンに対応するマニュアルを参照して正しい構文を確認してください。 : &#39;) &#39;チームAの点数&#39;,
       SUM(CASE WHEN `チーム名` = &#39;チームB&#39;...&#39; 付近 1 行目</code></pre></div>



<p>このようなエラーメッセージが出ました！</p>



<p>このようなメッセージが出た時は最後の「END」を確認して見て下さい。</p>



<h2 class="wp-block-heading">SQLでCASEとWHENとTHENを使用して分岐するのまとめ</h2>


<div class="wp-block-image">
<figure class="aligncenter size-large"><img decoding="async" width="1024" height="512" src="https://sugublog.org/wp-content/uploads/2021/07/code-007-01-1024x512.jpg" alt="SQLでCASEとWHENとTHENを使用して分岐するのまとめ" class="wp-image-3584" srcset="https://sugublog.org/wp-content/uploads/2021/07/code-007-01-1024x512.jpg 1024w, https://sugublog.org/wp-content/uploads/2021/07/code-007-01-300x150.jpg 300w, https://sugublog.org/wp-content/uploads/2021/07/code-007-01-768x384.jpg 768w, https://sugublog.org/wp-content/uploads/2021/07/code-007-01-1536x768.jpg 1536w, https://sugublog.org/wp-content/uploads/2021/07/code-007-01-scaled.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p><strong><span class="swl-inline-color has-swl-deep-01-color">SQLでCASEを使用して条件分岐する時の基礎構文</span></strong>は以下となります。</p>



<div class="hcb_wrap"><pre class="prism line-numbers lang-sql" data-lang="SQL"><code>CASE WHEN 評価 THEN 式
     WHEN 評価 THEN 式
     WHEN 評価 THEN 式
     ・
     ・
     ELSE 式
END</code></pre></div>



<p>SQLのCASEを使用する時の決まりはあまりなく、<span class="swl-marker mark_orange">どこにも記述できる</span>事が強みです。</p>



<p class="is-style-big_icon_caution">終了時にはENDを入れる（必須項目）</p>



<p>SELECT文を自分の行いたい表示に変更する時にCASEを使用します。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://sugublog.org/sql-base-case-when/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
