我需要从返回一行的不同行中选择数据。 我有这样的表:
SNO USEFUL COUNTER PINCODE SUBSNO DATA REFERENCE
--- ------ ------- ------- ------ ----------------------------- ---------
1 Y null 504293 null 504293 Sl.No
2 null null 504293 null 1 null
3 null null 504293 null iciseva00031 null
4 null null 504293 null SANTHOSH KUMAR null
5 null null 504293 null SANTHOSH MANTHENA null
6 null null 504293 null 12-52 BRAHMAN WADA null
7 null null 504293 null ASIFABAD null
8 null null 504293 null Andhra Pradesh null
9 null null 504293 null 9248859222 null
10 null null 504293 null 2 null
11 null null 504293 null WSGLDPL12415 null
12 null null 504293 null SIDDHARTHA COMMUNICATIONS null
13 null null 504293 null MASADE SATISH null
14 null null 504293 null HNO10-143POSTOFFICEROADBAPUNAGAR null
ASIFABADDISTKUMRAMBHEEMASIFABAD
15 null null 504293 null ADILABAD null
16 null null 504293 null ANDHRA PRADESH null
17 null null 504293 null 9059187009 null
我必须返回这样的输出:
PINCODE SUBSNO USER COMPANY AGENT ADDRESS CITY STATE PHONE
------- ------ ---- ------- ----- ------- ---- ----- -----
504293 1 iciseva00031 SANTHOSHKUMAR SANTHOSHMANTHENA 12-52 BRAHMAN WADA ASIFABAD Andhra Pradesh 9248859222
请帮帮我。
答案 0 :(得分:0)
“我必须像这样显示输出表:”
抓住那一行很容易(使用具有正则表达式支持的编辑器来帮助纠缠重复):
select t1.data as PINCODE
, t2.data as SUBSNO
, t3.data as USER
, t4.data as COMPANY
, t5.data as AGENT
, t6.data as ADDRESS
, t7.data as CITY
, t8.data as STATE
, t9.data as PHONE
from ( select PINCODE, DATA from your_table where PINCODE = DATA ) t1
left join ( select PINCODE, DATA from your_table where SNO = 2) t2
on t2.pincode = t1.pincode
left join ( select PINCODE, DATA from your_table where SNO = 3) t3
on t3.pincode = t1.pincode
left join ( select PINCODE, DATA from your_table where SNO = 4) t4
on t4.pincode = t1.pincode
left join ( select PINCODE, DATA from your_table where SNO = 5) t5
on t5.pincode = t1.pincode
left join ( select PINCODE, DATA from your_table where SNO = 6) t6
on t6.pincode = t1.pincode
left join ( select PINCODE, DATA from your_table where SNO = 7) t7
on t7.pincode = t1.pincode
left join ( select PINCODE, DATA from your_table where SNO = 8) t8
on t8.pincode = t1.pincode
left join ( select PINCODE, DATA from your_table where SNO = 9) t9
on t9.pincode = t1.pincode
where t1.pincode = '504293'
/
当然,这可能不是你需要的。毫无疑问,您希望拥有所有其他行 - sno >= 10
。简单:只需根据需要为多个列重复上述过程。
备注即可。
不幸的是,没有简单的。优雅,高效的解决方案,因为源数据是车祸。
这些通用数据存储表对于编写数据输入例程的开发人员来说很诱人。他们以非常简单的方式隐藏数据,而不必担心数据建模和所有繁琐的东西。此外,它还具有超强的灵活性和面向未来的特点。但他们实际上所做的就是填补了大量的技术债务,这些债务必须由需要获取数据的开发人员支付。