<?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>Full-house &#187; when</title>
	<atom:link href="http://full-house.cn/index.php/index.php/when/feed" rel="self" type="application/rss+xml" />
	<link>http://full-house.cn</link>
	<description>SELECT blog FROM TonyHu.full-house WHERE subject IN (Life,Web,Database)</description>
	<lastBuildDate>Wed, 25 Aug 2010 07:40:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Sql Case when 使用详细</title>
		<link>http://full-house.cn/index.php/201001/sql-case-when.html</link>
		<comments>http://full-house.cn/index.php/201001/sql-case-when.html#comments</comments>
		<pubDate>Tue, 26 Jan 2010 05:58:08 +0000</pubDate>
		<dc:creator>Tony hu</dc:creator>
				<category><![CDATA[SQL]]></category>
		<category><![CDATA[Sql Server]]></category>
		<category><![CDATA[case]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[when]]></category>

		<guid isPermaLink="false">http://full-house.cn/?p=628</guid>
		<description><![CDATA[Case具有两种格式。简单Case函数和Case搜索函数。
&#8211;简单Case函数
CASE sex
WHEN &#8216;1&#8242; THEN &#8216;男&#8217;
WHEN &#8216;2&#8242; THEN &#8216;女&#8217;
ELSE &#8216;其他&#8217; END
&#8211;Case搜索函数
CASE WHEN sex = &#8216;1&#8242; THEN &#8216;男&#8217;
WHEN sex = &#8216;2&#8242; THEN &#8216;女&#8217;
ELSE &#8216;其他&#8217; END
这两种方式，可以实现相同的功能。简单Case函数的写法相对比较简洁，但是和Case搜索函数相比，功能方面会有些限制，比如写判断式。
还有一个需要注意的问题，Case函数只返回第一个符合条件的值，剩下的Case部分将会被自动忽略。
--比如说，下面这段SQL，你永远无法得到“第二类”这个结果
CASE WHEN col_1 IN ( 'a', 'b') THEN '第一类'
WHEN col_1 IN ('a')       THEN '第二类'
ELSE'其他' END
下面我们来看一下，使用Case函数都能做些什么事情。
一，已知数据按照另外一种方式进行分组，分析。
有如下数据:(为了看得更清楚，我并没有使用国家代码，而是直接用国家名作为Primary Key)



国家（country）
人口（population）


中国
600


美国
100


加拿大
100


英国
200


法国
300


日本
250


德国
200


墨西哥
50


印度
250



根据这个国家人口数据，统计亚洲和北美洲的人口数量。应该得到下面这个结果。



洲
人口


亚洲
1100


北美洲
250


其他
700



想要解决这个问题，你会怎么做？生成一个带有洲Code的View，是一个解决方法，但是这样很难动态的改变统计的方式。
如果使用Case函数，SQL代码如下:
SELECT  SUM(population),
CASE country
WHEN '中国'     THEN '亚洲'
WHEN '印度' [...]]]></description>
			<content:encoded><![CDATA[<div class="postBody"><span style="font-family: 'Courier New', monospace; font-size: small;"><span style="line-height: 18px; white-space: pre;">Case具有两种格式。简单Case函数和Case搜索函数。</span></span></p>
<blockquote><p>&#8211;简单Case函数<br />
CASE sex<br />
WHEN &#8216;1&#8242; THEN &#8216;男&#8217;<br />
WHEN &#8216;2&#8242; THEN &#8216;女&#8217;<br />
ELSE &#8216;其他&#8217; END<br />
&#8211;Case搜索函数<br />
CASE WHEN sex = &#8216;1&#8242; THEN &#8216;男&#8217;<br />
WHEN sex = &#8216;2&#8242; THEN &#8216;女&#8217;<br />
ELSE &#8216;其他&#8217; END</p></blockquote>
<p>这两种方式，可以实现相同的功能。简单Case函数的写法相对比较简洁，但是和Case搜索函数相比，功能方面会有些限制，比如写判断式。<br />
还有一个需要注意的问题，Case函数只返回第一个符合条件的值，剩下的Case部分将会被自动忽略。</p>
<pre><span>--比如说，下面这段SQL，你永远无法得到“第二类”这个结果</span>
<span>CASE</span> <span>WHEN</span> col_1 <span>IN</span> ( <span>'a'</span>, <span>'b'</span>) <span>THEN</span> <span>'第一类'</span>
<span>WHEN</span> col_1 <span>IN</span> (<span>'a'</span>)       <span>THEN</span> <span>'第二类'</span>
<span>ELSE</span><span>'其他'</span> <span>END</span></pre>
<p>下面我们来看一下，使用Case函数都能做些什么事情。</p>
<p><strong>一，已知数据按照另外一种方式进行分组，分析。</strong></p>
<p>有如下数据:(为了看得更清楚，我并没有使用国家代码，而是直接用国家名作为Primary Key)</p>
<table border="0" width="200">
<tbody>
<tr>
<td width="100" align="center">国家（country）</td>
<td width="100" align="center" bordercolor="#1e7ab4">人口（population）</td>
</tr>
<tr>
<td align="center">中国</td>
<td align="center">600</td>
</tr>
<tr>
<td align="center">美国</td>
<td align="center">100</td>
</tr>
<tr>
<td align="center">加拿大</td>
<td align="center">100</td>
</tr>
<tr>
<td align="center">英国</td>
<td align="center">200</td>
</tr>
<tr>
<td align="center">法国</td>
<td align="center">300</td>
</tr>
<tr>
<td align="center">日本</td>
<td align="center">250</td>
</tr>
<tr>
<td align="center">德国</td>
<td align="center">200</td>
</tr>
<tr>
<td align="center">墨西哥</td>
<td align="center">50</td>
</tr>
<tr>
<td align="center">印度</td>
<td align="center">250</td>
</tr>
</tbody>
</table>
<p>根据这个国家人口数据，统计亚洲和北美洲的人口数量。应该得到下面这个结果。</p>
<table border="0" width="200">
<tbody>
<tr>
<td width="100" align="center">洲</td>
<td width="100" align="center">人口</td>
</tr>
<tr>
<td align="center">亚洲</td>
<td align="center">1100</td>
</tr>
<tr>
<td align="center">北美洲</td>
<td align="center">250</td>
</tr>
<tr>
<td align="center">其他</td>
<td align="center">700</td>
</tr>
</tbody>
</table>
<p>想要解决这个问题，你会怎么做？生成一个带有洲Code的View，是一个解决方法，但是这样很难动态的改变统计的方式。<br />
如果使用Case函数，SQL代码如下:</p>
<pre><span>SELECT</span>  SUM(population),
<span>CASE</span> country
<span>WHEN</span> <span>'中国'</span>     <span>THEN</span> <span>'亚洲'</span>
<span>WHEN</span> <span>'印度'</span>     <span>THEN</span> <span>'亚洲'</span>
<span>WHEN</span> <span>'日本'</span>     <span>THEN</span> <span>'亚洲'</span>
<span>WHEN</span> <span>'美国'</span>     <span>THEN</span> <span>'北美洲'</span>
<span>WHEN</span> <span>'加拿大'</span>  <span>THEN</span> <span>'北美洲'</span>
<span>WHEN</span> <span>'墨西哥'</span>  <span>THEN</span> <span>'北美洲'</span>
<span>ELSE</span> <span>'其他'</span> <span>END</span>
<span>FROM</span>    Table_A
<span>GROUP</span> <span>BY</span> <span>CASE</span> country
<span>WHEN</span> <span>'中国'</span>     <span>THEN</span> <span>'亚洲'</span>
<span>WHEN</span> <span>'印度'</span>     <span>THEN</span> <span>'亚洲'</span>
<span>WHEN</span> <span>'日本'</span>     <span>THEN</span> <span>'亚洲'</span>
<span>WHEN</span> <span>'美国'</span>     <span>THEN</span> <span>'北美洲'</span>
<span>WHEN</span> <span>'加拿大'</span>  <span>THEN</span> <span>'北美洲'</span>
<span>WHEN</span> <span>'墨西哥'</span>  <span>THEN</span> <span>'北美洲'</span>
<span>ELSE</span> <span>'其他'</span> <span>END</span>;</pre>
<p>同样的，我们也可以用这个方法来判断工资的等级，并统计每一等级的人数。SQL代码如下；</p>
<pre><span>SELECT</span>
<span>CASE</span> <span>WHEN</span> salary &lt;= 500 <span>THEN</span> <span>'1'</span>
<span>WHEN</span> salary &gt; 500 <span>AND</span> salary &lt;= 600  <span>THEN</span> <span>'2'</span>
<span>WHEN</span> salary &gt; 600 <span>AND</span> salary &lt;= 800  <span>THEN</span> <span>'3'</span>
<span>WHEN</span> salary &gt; 800 <span>AND</span> salary &lt;= 1000 <span>THEN</span> <span>'4'</span>
<span>ELSE</span> <span>NULL</span> <span>END</span> salary_class,
COUNT(*)
<span>FROM</span>    Table_A
<span>GROUP</span> <span>BY</span>
<span>CASE</span> <span>WHEN</span> salary &lt;= 500 <span>THEN</span> <span>'1'</span>
<span>WHEN</span> salary &gt; 500 <span>AND</span> salary &lt;= 600  <span>THEN</span> <span>'2'</span>
<span>WHEN</span> salary &gt; 600 <span>AND</span> salary &lt;= 800  <span>THEN</span> <span>'3'</span>
<span>WHEN</span> salary &gt; 800 <span>AND</span> salary &lt;= 1000 <span>THEN</span> <span>'4'</span>
<span>ELSE</span> <span>NULL</span> <span>END</span>;</pre>
<p><strong>二，用一个SQL语句完成不同条件的分组。</strong></p>
<p>有如下数据</p>
<table id="Table1" border="0" width="200">
<tbody>
<tr>
<td width="100" align="center">国家（country）</td>
<td width="100" align="center">性别（sex）</td>
<td width="100" align="center">人口（population）</td>
</tr>
<tr>
<td align="center">中国</td>
<td align="center">1</td>
<td align="center">340</td>
</tr>
<tr>
<td align="center">中国</td>
<td align="center">2</td>
<td align="center">260</td>
</tr>
<tr>
<td align="center">美国</td>
<td align="center">1</td>
<td align="center">45</td>
</tr>
<tr>
<td align="center">美国</td>
<td align="center">2</td>
<td align="center">55</td>
</tr>
<tr>
<td align="center">加拿大</td>
<td align="center">1</td>
<td align="center">51</td>
</tr>
<tr>
<td align="center">加拿大</td>
<td align="center">2</td>
<td align="center">49</td>
</tr>
<tr>
<td align="center">英国</td>
<td align="center">1</td>
<td align="center">40</td>
</tr>
<tr>
<td align="center">英国</td>
<td align="center">2</td>
<td align="center">60</td>
</tr>
</tbody>
</table>
<p>按照国家和性别进行分组，得出结果如下</p>
<table id="Table2" border="0" width="200">
<tbody>
<tr>
<td width="100" align="center">国家</td>
<td width="100" align="center">男</td>
<td width="100" align="center">女</td>
</tr>
<tr>
<td align="center">中国</td>
<td align="center">340</td>
<td align="center">260</td>
</tr>
<tr>
<td align="center">美国</td>
<td align="center">45</td>
<td align="center">55</td>
</tr>
<tr>
<td align="center">加拿大</td>
<td align="center">51</td>
<td align="center">49</td>
</tr>
<tr>
<td align="center">英国</td>
<td align="center">40</td>
<td align="center">60</td>
</tr>
</tbody>
</table>
<p>普通情况下，用UNION也可以实现用一条语句进行查询。但是那样增加消耗(两个Select部分)，而且SQL语句会比较长。<br />
下面是一个是用Case函数来完成这个功能的例子</p>
<pre><span>SELECT</span> country,
SUM( <span>CASE</span> <span>WHEN</span> sex = <span>'1'</span> <span>THEN</span>
population <span>ELSE</span> 0 <span>END</span>),  <span>--男性人口</span>
SUM( <span>CASE</span> <span>WHEN</span> sex = <span>'2'</span> <span>THEN</span>
population <span>ELSE</span> 0 <span>END</span>)   <span>--女性人口</span>
<span>FROM</span>  Table_A
<span>GROUP</span> <span>BY</span> country;</pre>
<p>这样我们使用Select，完成对二维表的输出形式，充分显示了Case函数的强大。</p>
<p><strong>三，在Check中使用Case函数。</strong></p>
<p>在Check中使用Case函数在很多情况下都是非常不错的解决方法。可能有很多人根本就不用Check，那么我建议你在看过下面的例子之后也尝试一下在SQL中使用Check。<br />
下面我们来举个例子<br />
公司A，这个公司有个规定，女职员的工资必须高于1000块。如果用Check和Case来表现的话，如下所示</p>
<pre><span>CONSTRAINT</span> check_salary <span>CHECK</span>
( <span>CASE</span> <span>WHEN</span> sex = <span>'2'</span>
<span>THEN</span> <span>CASE</span> <span>WHEN</span> salary &gt; 1000
<span>THEN</span> 1 <span>ELSE</span> 0 <span>END</span>
<span>ELSE</span> 1 <span>END</span> = 1 )</pre>
<p>如果单纯使用Check，如下所示</p>
<pre><span>CONSTRAINT</span> check_salary <span>CHECK</span>
( sex = <span>'2'</span> <span>AND</span> salary &gt; 1000 )</pre>
<p>女职员的条件倒是符合了，男职员就无法输入了。</p></div>
<div class="postBody"><strong>四，根据条件有选择的UPDATE。</strong></p>
<p>例，有如下更新条件</p>
<ol>
<li>工资5000以上的职员，工资减少10%</li>
<li>工资在2000到4600之间的职员，工资增加15%</li>
</ol>
<p>很容易考虑的是选择执行两次UPDATE语句，如下所示</p>
<pre><span>--条件1</span>
<span>UPDATE</span> Personnel
<span>SET</span> salary = salary * 0.9
<span>WHERE</span> salary &gt;= 5000;
<span>--条件2</span>
<span>UPDATE</span> Personnel
<span>SET</span> salary = salary * 1.15
<span>WHERE</span> salary &gt;= 2000 <span>AND</span> salary &lt; 4600;</pre>
<p>但是事情没有想象得那么简单，假设有个人工资5000块。首先，按照条件1，工资减少10%，变成工资4500。接下来运行第二个SQL时候，因为这个人的工资是4500在2000到4600的范围之内， 需增加15%，最后这个人的工资结果是5175,不但没有减少，反而增加了。如果要是反过来执行，那么工资4600的人相反会变成减少工资。暂且不管这个规章是多么荒诞，如果想要一个SQL 语句实现这个功能的话，我们需要用到Case函数。代码如下:</p>
<pre><span>UPDATE</span> Personnel
<span>SET</span> salary = <span>CASE</span> <span>WHEN</span> salary &gt;= 5000
　            <span>THEN</span> salary * 0.9
<span>WHEN</span> salary &gt;= 2000 <span>AND</span> salary &lt; 4600
<span>THEN</span> salary * 1.15
<span>ELSE</span> salary <span>END</span>;</pre>
<p>这里要注意一点，最后一行的ELSE salary是必需的，要是没有这行，不符合这两个条件的人的工资将会被写成NUll,那可就大事不妙了。在Case函数中Else部分的默认值是NULL，这点是需要注意的地方。<br />
这种方法还可以在很多地方使用，比如说变更主键这种累活。<br />
一般情况下，要想把两条数据的Primary key,a和b交换，需要经过临时存储，拷贝，读回数据的三个过程，要是使用Case函数的话，一切都变得简单多了。</p>
<table border="0" width="300">
<tbody>
<tr>
<td width="100" align="center">p_key</td>
<td width="100" align="center">col_1</td>
<td width="100" align="center">col_2</td>
</tr>
<tr>
<td align="center">a</td>
<td align="center">1</td>
<td align="center">张三</td>
</tr>
<tr>
<td align="center">b</td>
<td align="center">2</td>
<td align="center">李四</td>
</tr>
<tr>
<td align="center">c</td>
<td align="center">3</td>
<td align="center">王五</td>
</tr>
</tbody>
</table>
<p>假设有如上数据，需要把主键<code>a</code>和<code>b</code>相互交换。用Case函数来实现的话，代码如下</p>
<pre><span>UPDATE</span> SomeTable
<span>SET</span> p_key = <span>CASE</span> <span>WHEN</span> p_key = <span>'a'</span>
<span>THEN</span> <span>'b'</span>
<span>WHEN</span> p_key = <span>'b'</span>
<span>THEN</span> <span>'a'</span>
<span>ELSE</span> p_key <span>END</span>
<span>WHERE</span> p_key <span>IN</span> (<span>'a'</span>, <span>'b'</span>);</pre>
<p>同样的也可以交换两个Unique key。需要注意的是，如果有需要交换主键的情况发生，多半是当初对这个表的设计进行得不够到位，建议检查表的设计是否妥当。</p>
<p><strong>五，两个表数据是否一致的检查。</strong></p>
<p>Case函数不同于DECODE函数。在Case函数中，可以使用BETWEEN,LIKE,IS NULL,IN,EXISTS等等。比如说使用IN,EXISTS，可以进行子查询，从而 实现更多的功能。<br />
下面具个例子来说明，有两个表，tbl_A,tbl_B，两个表中都有keyCol列。现在我们对两个表进行比较，tbl_A中的keyCol列的数据如果在tbl_B的keyCol列的数据中可以找到， 返回结果&#8217;Matched&#8217;,如果没有找到，返回结果&#8217;Unmatched&#8217;。<br />
要实现下面这个功能，可以使用下面两条语句</p>
<pre><span>--使用IN的时候</span>
<span>SELECT</span> keyCol,
<span>CASE</span> <span>WHEN</span> keyCol <span>IN</span> ( <span>SELECT</span> keyCol <span>FROM</span> tbl_B )
<span>THEN</span> <span>'Matched'</span>
<span>ELSE</span> <span>'Unmatched'</span> <span>END</span> Label
<span>FROM</span> tbl_A;
<span>--使用EXISTS的时候</span>
<span>SELECT</span> keyCol,
<span>CASE</span> <span>WHEN</span> EXISTS ( <span>SELECT</span> * <span>FROM</span> tbl_B
<span>WHERE</span> tbl_A.keyCol = tbl_B.keyCol )
<span>THEN</span> <span>'Matched'</span>
<span>ELSE</span> <span>'Unmatched'</span> <span>END</span> Label
<span>FROM</span> tbl_A;</pre>
<p>使用IN和EXISTS的结果是相同的。也可以使用NOT IN和NOT EXISTS，但是这个时候要注意NULL的情况。</p>
<p><strong>六，在Case函数中使用合计函数</strong></p>
<p>假设有下面一个表</p>
<table border="0">
<tbody>
<tr>
<td align="center">学号(std_id)</td>
<td align="center">课程ID(class_id)</td>
<td align="center">课程名(class_name)</td>
<td align="center">主修flag（main_class_flg)</td>
</tr>
<tr>
<td align="center">100</td>
<td align="center">1</td>
<td align="center">经济学</td>
<td align="center">Y</td>
</tr>
<tr>
<td align="center">100</td>
<td align="center">2</td>
<td align="center">历史学</td>
<td align="center">N</td>
</tr>
<tr>
<td align="center">200</td>
<td align="center">2</td>
<td align="center">历史学</td>
<td align="center">N</td>
</tr>
<tr>
<td align="center">200</td>
<td align="center">3</td>
<td align="center">考古学</td>
<td align="center">Y</td>
</tr>
<tr>
<td align="center">200</td>
<td align="center">4</td>
<td align="center">计算机</td>
<td align="center">N</td>
</tr>
<tr>
<td align="center">300</td>
<td align="center">4</td>
<td align="center">计算机</td>
<td align="center">N</td>
</tr>
<tr>
<td align="center">400</td>
<td align="center">5</td>
<td align="center">化学</td>
<td align="center">N</td>
</tr>
<tr>
<td align="center">500</td>
<td align="center">6</td>
<td align="center">数学</td>
<td align="center">N</td>
</tr>
</tbody>
</table>
<p>有的学生选择了同时修几门课程(100,200)也有的学生只选择了一门课程(300,400,500)。选修多门课程的学生，要选择一门课程作为主修，主修flag里面写入 Y。只选择一门课程的学生，主修flag为N(实际上要是写入Y的话，就没有下面的麻烦事了，为了举例子，还请多多包含)。<br />
现在我们要按照下面两个条件对这个表进行查询</p>
<ol>
<li>只选修一门课程的人，返回那门课程的ID</li>
<li>选修多门课程的人，返回所选的主课程ID</li>
</ol>
<p>简单的想法就是，执行两条不同的SQL语句进行查询。<br />
条件1</p>
<pre><span>--条件1：只选择了一门课程的学生</span>
<span>SELECT</span> std_id, MAX(class_id) <span>AS</span> main_class
<span>FROM</span> Studentclass
<span>GROUP</span> <span>BY</span> std_id
<span>HAVING</span> COUNT(*) = 1;</pre>
<p>执行结果1</p>
<pre class="src">STD_ID   MAIN_class
<span>------   ----------</span>
300      4
400      5
500      6</pre>
<p>条件2</p>
<pre><span>--条件2：选择多门课程的学生</span>
<span>SELECT</span> std_id, class_id <span>AS</span> main_class
<span>FROM</span> Studentclass
<span>WHERE</span> main_class_flg = <span>'Y'</span> ;</pre>
<p>执行结果2</p>
<pre>STD_ID  MAIN_class
<span>------  ----------</span>
100     1
200     3</pre>
<p>如果使用Case函数，我们只要一条SQL语句就可以解决问题，具体如下所示</p>
<pre><span>SELECT</span>  std_id,
<span>CASE</span> <span>WHEN</span> COUNT(*) = 1  <span>--只选择一门课程的学生的情况</span>
<span>THEN</span> MAX(class_id)
<span>ELSE</span> MAX(<span>CASE</span> <span>WHEN</span> main_class_flg = <span>'Y'</span>
<span>THEN</span> class_id
<span>ELSE</span> <span>NULL</span> <span>END</span>
)
<span>END</span> <span>AS</span> main_class
<span>FROM</span> Studentclass
<span>GROUP</span> <span>BY</span> std_id;</pre>
<p>运行结果</p>
<pre>STD_ID   MAIN_class
<span>------   ----------</span>
100      1
200      3
300      4
400      5
500      6</pre>
<p>通过在Case函数中嵌套Case函数，在合计函数中使用Case函数等方法，我们可以轻松的解决这个问题。使用Case函数给我们带来了更大的自由度。<br />
最后提醒一下使用Case函数的新手注意不要犯下面的错误</p>
<pre><span>CASE</span> col_1
<span>WHEN</span> 1    　   <span>THEN</span> <span>'Right'</span>
<span>WHEN</span> <strong>NULL</strong>  <span>THEN</span> <span>'Wrong'</span>
<span>END</span></pre>
<p>在这个语句中When Null这一行总是返回unknown，所以永远不会出现Wrong的情况。因为这句可以替换成WHEN col_1 = NULL，这是一个错误的用法，这个时候我们应该选择用WHEN col_1 IS NULL。</p></div>
<blockquote><p>我的SQL语句：</p>
<p>Select A.HCM,A.HCMSum,<strong>case  when B.ThreeSum is Null then 0 else  B.ThreeSum end as TheSum</strong>From<br />
(SELECT HCM,Count(HCM) AS HCMSum<br />
FROM [FeedBack]<br />
Where ([ProductionDate] between &#8216;2010-1-21 6:00:00&#8242; and &#8216;2010-1-26 6:00:00&#8242;) and [FeedBackType]=1<br />
Group by HCM) A<br />
left join (<br />
SELECT HCM,Count(LastCarton) AS ThreeSum<br />
FROM [FeedBack]<br />
Where ([ProductionDate] between &#8216;2010-1-21 6:00:00&#8242; and &#8216;2010-1-26 6:00:00&#8242;) and [FeedBackType]=1 and LastCarton&lt;&gt;0<br />
Group by HCM) B<br />
ON A.HCM=B.HCM</p>
<p>注意：黑体部分是错过的地方，这里有NULL 不可以使用简单的Case函数，而要使用Case搜索函数。</p></blockquote>
<p>源文：http://www.cnblogs.com/xianzuoqiaoqi/archive/2009/05/20/1467449.html</p>
]]></content:encoded>
			<wfw:commentRss>http://full-house.cn/index.php/201001/sql-case-when.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
