h******y 发帖数: 25 | 1 求问大牛
如何在sql server中实现动态选择columns。
比如针对某一个特定id,我只想在结果中出现非null的column,如果改变id,结果中的
column应该是不一样的,请问这样的query能否实现呢?
谢谢! |
s********e 发帖数: 893 | 2 有没有具体例子说说想干啥?想到decode或许可以实现。 |
h******y 发帖数: 25 | 3 具体例子如下:
select * from table -- gives the following output
server col2 col3 col4 col5 col6 col7 col8 col9 col10
1 1234 null null 678 987 890 null 567 null
1 4565 null null 234 67 56 null 345 null
2 null null 578 567 234 null 73 18 null
2 null null 626 289 395 null 84 399 null
3 567 null 845 null 987 674 null null 648
3 654 null 463 null 876 523 null null 921
Desired Output:
select * from where server = 1
sample out put Should look like this.
server col2 col5 col6 col7 col9
1 1234 678 987 890 567
1 4565 234 67 56 345 |
s**********o 发帖数: 14359 | 4 请问这种怎么办啊
1 null null null null null null null null null
你有一个默认的RULE,如果COL1无值,就接着往后走,一直到有值
这不是CURSOR的FOR LOOP吗? |
h******y 发帖数: 25 | 5 这样就除了第一列什么都不显示。这样的loop怎么在sql server中实现啊?
【在 s**********o 的大作中提到】 : 请问这种怎么办啊 : 1 null null null null null null null null null : 你有一个默认的RULE,如果COL1无值,就接着往后走,一直到有值 : 这不是CURSOR的FOR LOOP吗?
|
s**********o 发帖数: 14359 | 6 你去看CURSOR就知道了
【在 h******y 的大作中提到】 : 这样就除了第一列什么都不显示。这样的loop怎么在sql server中实现啊?
|
s**********o 发帖数: 14359 | 7 ISNULL COALESCE也不行,只能CURSOR去LOOP了 |
h******y 发帖数: 25 | 8 恩,select case when也不行。cursor从来没用过
【在 s**********o 的大作中提到】 : ISNULL COALESCE也不行,只能CURSOR去LOOP了
|
i*******d 发帖数: 81 | 9 why data appears in pairs? is it always true?
What is the desired output if you have:
server col2 col3 col4 col5 col6 col7 col8 col9 col10
1 1234 null null 678 987 890 null 567 null
1 null null null 234 67 56 null 345 null
null
null
null
648
921
【在 h******y 的大作中提到】 : 具体例子如下: : select * from table -- gives the following output : server col2 col3 col4 col5 col6 col7 col8 col9 col10 : 1 1234 null null 678 987 890 null 567 null : 1 4565 null null 234 67 56 null 345 null : 2 null null 578 567 234 null 73 18 null : 2 null null 626 289 395 null 84 399 null : 3 567 null 845 null 987 674 null null 648 : 3 654 null 463 null 876 523 null null 921 : Desired Output:
|
d****n 发帖数: 12461 | 10 要不nullif(col2,'NA')?
【在 h******y 的大作中提到】 : 这样就除了第一列什么都不显示。这样的loop怎么在sql server中实现啊?
|
|
|
c*****d 发帖数: 6045 | 11 首先,这个表这么设计不好
不过估计你也不能改表的设计
类似是同一时间N个传感器传回过来的数据
其次,cursor不是干这个用的
cursor是move from one row to the other
这个就是一个简单的nested if
if ( col2 is not null )
return col2
elsif ( col3 is not null )
return col3
elsif ( col4 is not null )
return col4
... |
B*****g 发帖数: 34098 | 12 你没审题,哈哈
【在 c*****d 的大作中提到】 : 首先,这个表这么设计不好 : 不过估计你也不能改表的设计 : 类似是同一时间N个传感器传回过来的数据 : 其次,cursor不是干这个用的 : cursor是move from one row to the other : 这个就是一个简单的nested if : if ( col2 is not null ) : return col2 : elsif ( col3 is not null ) : return col3
|
l******b 发帖数: 39 | 13
Use dynamic sql with DBMS_SQL?
【在 B*****g 的大作中提到】 : 你没审题,哈哈
|
h******y 发帖数: 25 | 14 这个例子是我在网上抓的,有人和我问同样的问题没得到解决,其实我这是没有成对的。
null
【在 i*******d 的大作中提到】 : why data appears in pairs? is it always true? : What is the desired output if you have: : server col2 col3 col4 col5 col6 col7 col8 col9 col10 : 1 1234 null null 678 987 890 null 567 null : 1 null null null 234 67 56 null 345 null : : null : null : null : 648
|
h******y 发帖数: 25 | 15 会不会太复杂呀?我这是要用在网页上,可能没法用动态的?
【在 l******b 的大作中提到】 : : Use dynamic sql with DBMS_SQL?
|
i*******d 发帖数: 81 | 16 你没有回答我的问题啊。那个例子你要出什么结果?
的。
【在 h******y 的大作中提到】 : 这个例子是我在网上抓的,有人和我问同样的问题没得到解决,其实我这是没有成对的。 : : null
|