我有两张表。
表TESTS有以下字段(只列出需要用的)
TEST_ID,TEST_QX
(其中TEST_QX有许多重复的,有中文,有数字)
表AB50有以下字段(只列出需要用的)
YAB003,AAB300
(YAB003的内容为数字,YAB003与TESTS表中TEST_QX关联,AAB300为YAB003的中文表示)
我想做以下操作。
按TEST_QX分组,查询相同TEST_QX有多少ID,同时用中文(AAB300)代替数字(TEST_QX),如果TEST_QX是中文,则使用该中文显示

解决方案 »

  1.   

    会使用CASE WHEN。我写了很多次都没有成功。有没有高手帮下忙。谢谢了。
      

  2.   

    看看这个行吗
    select case when REGEXP_INSTR(test_qx,'[[:digit:]]')=0 then test_qx else aab300 end) aaa,count(*)
    from (select test_qx,aab300 from tests a,ab50 b where a.test_qx=b.yab003)
    group by aaa;
      

  3.   

    不行。出来后在TESTS表中TEST_QX字段的中文没有被显示出来。只统计了在两张表中关联了的字段。
    比如TEST_QX有以下内容:
    0001
    0001
    0002
    0003
    0002
    0003
    北京
    上海
    重庆
    在AB50中yab003,aab300以下内容
    0001      成都
    0002      新都
    0003      内江 按你的语句出来后。没有了北京,上海,重庆三个统计
      

  4.   

    这样呢
    select case when REGEXP_INSTR(test_qx,'[[:digit:]]')=0 then test_qx else aab300 end) aaa,count(*)
    from (select test_qx,aab300 from tests a left join ab50 b on a.test_qx=b.yab003)
    group by aaa;