万能的D版,求助一个sql查询的问题,高手请进~~~
- 大部头书表结构如下插图
三个字段,第一个是群组信息,第二个是id,第三个是属性
想实现这样一个查询结果,
结果用select case when 和group by 查询的时候复制代码- select groupName, (case when type='A' then id end), (case when type='B' then id end) from `test` group by groupName;
查询完竟然是这个:
苍天啊,大地啊,为何有些查询结果是null啊,各位大神求解!~~ - boyi55做个行转列?
- 大部头书
- iamright这个一看就比较复杂 等高手来吧
- boyi55有专门的函数处理,一般是pivot unpivot
- small32楼主,不是你不写else,else就不存在的,就是因为存在else,导致会有null的产生
如果不会用高级函数的话,直接嵌套一层查询就好 - hesiyu复制代码
- SELECT
- groupName,
- MAX(A_ID) AS A_ID,
- MAX(B_ID) AS B_ID
- FROM
- (SELECT
- groupName,
- CASE type WHEN 'A' THEN id END AS A_ID,
- CASE type WHEN 'B' THEN id END AS B_ID
- FROM
- `test`
- ) AS data_tbl
- GROUP BY groupName
- SELECT
- 大部头书
- hesiyu复制代码
- SELECT
- groupName,
- MAX(CASE type WHEN 'A' THEN id END) AS A_ID,
- MAX(CASE type WHEN 'B' THEN id END) AS B_ID
- FROM
- `test`
- GROUP BY groupName
- SELECT
- pluckSelect A1.groupname,A1.id,A2.id from (select groupname,id from t1 where ttype='A') A1,(select groupname,id from t1 where ttype='B') A2
where A1.groupname=A2.groupname
呃,N久没写SQL了,用的最原始的方法。。。 - 大部头书