首页 新闻 搜索 专区 学院

sql查询(高手请进)

0
悬赏园豆:10 [已解决问题] 解决于 2012-06-05 18:32

item  value

1        a

1        b

2        b

2        b

3        a

3        a

4        a

4        b

...       ...

在value里就只有两个值,一个是a,一个是b

当value中值相同时,显示这个相同的值

若值不相同,则显示a

怎么查询?

彬彬@科比的主页 彬彬@科比 | 初学一级 | 园豆:43
提问于:2012-06-02 16:32
< >
分享
最佳答案
0
-- MS SQL 2005

SELECT item,
CASE 
  WHEN isA=1 THEN 'a'
  ELSE 'b'
END AS value
FROM (
    select value,item,
        CASE
          WHEN value = 'a' THEN 'isA'
           WHEN value = 'b' THEN 'isB'
         END AS category
     from test
    group by value,item
) AS D
PIVOT(COUNT(value) FOR
 category IN([isA],[isB])) AS P

楼主看可不可以

收获园豆:10
Hejin.Wong | 菜鸟二级 |园豆:229 | 2012-06-03 18:57

这个不错

彬彬@科比 | 园豆:43 (初学一级) | 2012-06-05 18:33
其他回答(3)
0

select dictinct item, value from ...

无之无 | 园豆:5085 (大侠五级) | 2012-06-02 16:52

??

支持(0) 反对(0) 彬彬@科比 | 园豆:43 (初学一级) | 2012-06-03 11:53
0

说清楚点撒,没看明白您的问题

八戒的师傅 | 园豆:1472 (小虾三级) | 2012-06-03 12:27

每个对应得ITEM只有两条记录,它们的value分别是a或b,如果同时为a显示a 同时为b显示b 如果为a或b显示,这题结果为

结果为

1   a

2   b

3   a

4   a

支持(0) 反对(0) 彬彬@科比 | 园豆:43 (初学一级) | 2012-06-03 14:04
0

sql server的话:

select item,min(value) from tb group by item

因为你value只有两个的可能取值,所以min或max一定能够取得你觉得需要优先的那个

P_Chou | 园豆:210 (菜鸟二级) | 2012-06-05 13:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册