高分请教SQL高手?如何将数据分列显示?

cyr12 2009-10-29 09:54:11
数据表有下面两个字段。
M_ID Money
------------------------
1 100
2 -50
3 200
4 -1000
5 40
6 90

...............

如何将上表的数据查询并显示为

M_ID positive negative
-------------------------------
1 100 NULL
2 NULL -50
3 200 NULL
4 NULL -10000
5 40 NULL
6 90 NULL
..................

即将Money字段分两列显示, 正值显示在positive, 负值显示在negative。如何做? 要用SQL。
...全文
327 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuzhen8080 2010-12-01
  • 打赏
  • 举报
回复
小弟还有个问题想问下, 就是那些分开的数据,怎么才能成一行呢。。。。。
很急啊。。。。
wuzhen8080 2010-12-01
  • 打赏
  • 举报
回复
哎 太牛屎了。。。。。

牛屎哥啊 。。。。。

太崇拜了。。。。。
cyr12 2009-10-29
  • 打赏
  • 举报
回复
找到正确答案,散分了! 谢谢各位大侠
--小F-- 2009-10-29
  • 打赏
  • 举报
回复
----------------------------------------------------------------
-- Author :fredrickhu(我是小F,向高手学习)
-- Date :2009-10-29 10:02:40
-- Version:
-- Microsoft SQL Server 2005 - 9.00.4035.00 (Intel X86)
-- Nov 24 2008 13:01:59
-- Copyright (c) 1988-2005 Microsoft Corporation
-- Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([M_ID] int,[Money] int)
insert [tb]
select 1,100 union all
select 2,-50 union all
select 3,200 union all
select 4,-1000 union all
select 5,40 union all
select 6,90
--------------开始查询--------------------------
select
M_ID,
positive=(case when Money > 0 then convert(varchar,Money) else null end),
negative=(case when Money < 0 then convert(varchar,Money) else null end)
from tb
----------------结果----------------------------
/* M_ID positive negative
----------- ------------------------------ ------------------------------
1 100 NULL
2 NULL -50
3 200 NULL
4 NULL -1000
5 40 NULL
6 90 NULL

(6 行受影响)
*/
luoyoumou 2009-10-29
  • 打赏
  • 举报
回复
--0既不是正数也不是负数!
SELECT MID
,CASE WHEN [MONEY]>0 THEN MONEY ELSE NULL END 'positive'
,CASE WHEN [MONEY]<0 THEN MONEY ELSE NULL END 'negative'
FROM TB
guguda2008 2009-10-29
  • 打赏
  • 举报
回复
发现我们都没加[]

SELECT MID 
,CASE WHEN [MONEY]>=0 THEN [MONEY] ELSE NULL END 'positive'
,CASE WHEN [MONEY]<0 THEN [MONEY] ELSE NULL END 'negative'
FROM TB


liangCK 2009-10-29
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cyr12 的回复:]
liangCK 的不行


消息 207,级别 16,状态 3,第 12 行
列名 'positive' 无效。
消息 207,级别 16,状态 3,第 12 行
列名 'positive' 无效。

[/Quote]

select m_id,
case when money>0 then money end,
case when money<=0 then money end
from tb
华夏小卒 2009-10-29
  • 打赏
  • 举报
回复

create table #student( M_ID int,Money int)
insert #student select
1, 100 union all select
2, -50 union all select
3, 200 union all select
4, -1000 union all select
5, 40 union all select
6, 90

select M_ID,
positive=case when money>0 then money else null end,
negative=case when money>0 then null else money end
from #student

M_ID positive negative
----------- ----------- -----------
1 100 NULL
2 NULL -50
3 200 NULL
4 NULL -1000
5 40 NULL
6 90 NULL

(6 行受影响)
drop table #student
cyr12 2009-10-29
  • 打赏
  • 举报
回复

liangCK 的不行


消息 207,级别 16,状态 3,第 12 行
列名 'positive' 无效。
消息 207,级别 16,状态 3,第 12 行
列名 'positive' 无效。
luoyoumou 2009-10-29
  • 打赏
  • 举报
回复
--0既不是正数也不是负数!呵呵...........
SQL77 2009-10-29
  • 打赏
  • 举报
回复
SELECT M_ID,
CASE WHEN Money>0 THEN Money END AS positive ,

CASE WHEN Money<=0 THEN Money END AS negative ,
FROM TB
guguda2008 2009-10-29
  • 打赏
  • 举报
回复
地下室
7761098 2009-10-29
  • 打赏
  • 举报
回复
select M_ID,
positive=(case when Money > 0 then convert(varchar,Money) else NULL END),
negative=(case when Money < 0 then convert(varchar,Money) else NULL END)
from 表
xiequan2 2009-10-29
  • 打赏
  • 举报
回复
case when
luoyoumou 2009-10-29
  • 打赏
  • 举报
回复
select m_id,
case when money>0 then positive end,
case when money<0 then negative end
from tb
guguda2008 2009-10-29
  • 打赏
  • 举报
回复
SELECT MID
,CASE WHEN [MONEY]>=0 THEN MONEY ELSE NULL END 'positive'
,CASE WHEN [MONEY]<0 THEN MONEY ELSE NULL END 'negative'
FROM TB
SQL77 2009-10-29
  • 打赏
  • 举报
回复
SELECT M_ID,
CASE WHEN Money>0 THEN Money END AS positive ,

CASE WHEN Money<0 THEN Money END AS negative ,
FROM TB
luoyoumou 2009-10-29
  • 打赏
  • 举报
回复
case when轻松搞定100分
liangCK 2009-10-29
  • 打赏
  • 举报
回复
select m_id,
case when money>0 then positive end,
case when money<=0 then positive end
from tb

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧