56,687
社区成员
发帖
与我相关
我的任务
分享
SELECT 'V1' REMARKS,
B1.UID,
(SELECT IF(B.V1<>0,A.ATTR1,NULL) FROM A,B WHERE A.UID=B.UID AND B.UID=B1.UID AND B.ATTR_NAME='ATTR1')ATTR1,
(SELECT IF(B.V1<>0,A.ATTR2,NULL) FROM A,B WHERE A.UID=B.UID AND B.UID=B1.UID AND B.ATTR_NAME='ATTR2')ATTR2
FROM( SELECT DISTINCT UID FROM B)B1
UNION ALL
SELECT 'V2' REMARKS,
B1.UID,
(SELECT IF(B.V2<>0,A.ATTR1,NULL) FROM A,B WHERE A.UID=B.UID AND B.UID=B1.UID AND B.ATTR_NAME='ATTR1')ATTR1,
(SELECT IF(B.V2<>0,A.ATTR2,NULL) FROM A,B WHERE A.UID=B.UID AND B.UID=B1.UID AND B.ATTR_NAME='ATTR2')ATTR2
FROM( SELECT DISTINCT UID FROM B)B1
ORDER BY UID,REMARKS
[/quote]
测试后确实满足需求,多谢!
SELECT 'V1' REMARKS,
B1.UID,
(SELECT IF(B.V1<>0,A.ATTR1,NULL) FROM A,B WHERE A.UID=B.UID AND B.UID=B1.UID AND B.ATTR_NAME='ATTR1')ATTR1,
(SELECT IF(B.V1<>0,A.ATTR2,NULL) FROM A,B WHERE A.UID=B.UID AND B.UID=B1.UID AND B.ATTR_NAME='ATTR2')ATTR2
FROM( SELECT DISTINCT UID FROM B)B1
UNION ALL
SELECT 'V2' REMARKS,
B1.UID,
(SELECT IF(B.V2<>0,A.ATTR1,NULL) FROM A,B WHERE A.UID=B.UID AND B.UID=B1.UID AND B.ATTR_NAME='ATTR1')ATTR1,
(SELECT IF(B.V2<>0,A.ATTR2,NULL) FROM A,B WHERE A.UID=B.UID AND B.UID=B1.UID AND B.ATTR_NAME='ATTR2')ATTR2
FROM( SELECT DISTINCT UID FROM B)B1
ORDER BY UID,REMARKS