求一条查询sql,该如何处理
求一条查询sql
求一条查询语句
column1 column3 column4
1 10 null
2 10 6
3 20 8
结果:
column1 column3 column4
1 10 0
2 10 0
2 0 6
3 20 0
3 0 8
结果解释:
1、当column3和column4其中一个为null时,就显示自己原本那条数据
2、当column3和column4都有数值时,就显示2条。
这2条前面的列保持一致,即column1相同,但后面就分情况,当column3为原值时,column4作0;
当column4为原值时,column3设0.
------解决思路----------------------
------解决思路----------------------
------解决思路----------------------
这不很简单么!
求一条查询语句
column1 column3 column4
1 10 null
2 10 6
3 20 8
结果:
column1 column3 column4
1 10 0
2 10 0
2 0 6
3 20 0
3 0 8
结果解释:
1、当column3和column4其中一个为null时,就显示自己原本那条数据
2、当column3和column4都有数值时,就显示2条。
这2条前面的列保持一致,即column1相同,但后面就分情况,当column3为原值时,column4作0;
当column4为原值时,column3设0.
------解决思路----------------------
SELECT column1
,CASE WHEN column3 IS NULL OR column4 IS NULL THEN column3
WHEN RN=1 THEN column3 ELSE 0 END column3
,CASE WHEN column3 IS NULL OR column4 IS NULL THEN column4
WHEN RN=2 THEN column4 ELSE 0 END column4
FROM TB T1,(SELECT 1 RN UNION SELECT 2)T2
ORDER BY T1.column1,RN
------解决思路----------------------
select distinct id,c1,c2 from (改进了一下
SELECT id
,CASE WHEN c1 IS null or c2 IS NULL THEN c1
WHEN RN=1 THEN c1 ELSE 0 END c1
,CASE WHEN c1 IS NULL or c2 IS NULL THEN c2
WHEN RN=2 THEN c2 ELSE 0 END c2
FROM cc T1,(SELECT 1 RN UNION SELECT 2)T2
--ORDER BY T1.id,RN
) tt
------解决思路----------------------
这不很简单么!
/* 测试数据
WITH table1(column1,column3,column4) AS (
SELECT 1,10,null UNION ALL
SELECT 2,10,6 UNION ALL
SELECT 3,20,8
) */
SELECT *
FROM (
SELECT column1, column3, 0 column4
FROM table1
WHERE column3 IS NOT NULL
UNION ALL
SELECT column1, 0 column3, column4
FROM table1
WHERE column4 IS NOT NULL
) t
ORDER BY column1, column3 DESC
column1 column3 column4
----------- ----------- -----------
1 10 0
2 10 0
2 0 6
3 20 0
3 0 8