select
sum(case when cus_status='未确认' then 1 else 0 end) as cus_none,
sum(case when cus_status='确认' then 1 else 0 end) as cus_confirm ,
sum(case when cus_status='看房' then 1 else 0 end) as cus_abandon,
sum(case when cus_status='签约' then 1 else 0 end) as cus_sign ,
sum(case when cus_status='已放弃' then 1 else 0 end) as cus_abandon
from min_customs where datediff(mm,cus_time,getdate())=0
表结构
现在我只是获取当前月的数据,但我想要的是1至12月的数据,然后将这些数据放在dataset中!江湖救急!! 谢谢!
15 个解决方案
#1
datediff(
yy,
#2
1-12月的数据 你想怎么排?显示成什么样子?
#3
如果还是这样的话
select
sum(case when cus_status='未确认' then 1 else 0 end) as cus_none,
sum(case when cus_status='确认' then 1 else 0 end) as cus_confirm ,
sum(case when cus_status='看房' then 1 else 0 end) as cus_abandon,
sum(case when cus_status='签约' then 1 else 0 end) as cus_sign ,
sum(case when cus_status='已放弃' then 1 else 0 end) as cus_abandon
from min_customs where datediff(year,cus_time,getdate())=0
#4
不是的,应该是每一个月
“未确认、确认、看房、签约、已放弃”这些字段的数据总和,总共有12个月!这是我要做C#折线图要用到的!是我没说清楚,你能帮我再看一下吗?谢谢!
#5
将字段为null该为0,还有这个问题??帮忙看一下,谢谢!
#6
nullif()不能实现!我试过了!
#7
假设你的数据只有2014年的。
select yuefen,cus_status,count(cus_status) as amount from (
select month(cus_time) as yuefen,cus_status from min_customs
) as a group by yuefen,cus_status order by yuefen
如果不是你要的结果,你还是把结果贴出来,不然不知道你要的是什么。
select yuefen,cus_status,count(cus_status) as amount from (
select month(cus_time) as yuefen,cus_status from min_customs
) as a group by yuefen,cus_status order by yuefen
如果不是你要的结果,你还是把结果贴出来,不然不知道你要的是什么。
#8
感觉楼主是想要2014年 对月份分组, 然后得出各个状态的的行数。
select
sum(case when cus_status='未确认' then 1 else 0 end) as cus_none,
sum(case when cus_status='确认' then 1 else 0 end) as cus_confirm ,
sum(case when cus_status='看房' then 1 else 0 end) as cus_abandon,
sum(case when cus_status='签约' then 1 else 0 end) as cus_sign ,
sum(case when cus_status='已放弃' then 1 else 0 end) as cus_abandon,
from min_customs where datepart(yy,cus_time)='2014'
group by datepart(mm,cus_time)
select
sum(case when cus_status='未确认' then 1 else 0 end) as cus_none,
sum(case when cus_status='确认' then 1 else 0 end) as cus_confirm ,
sum(case when cus_status='看房' then 1 else 0 end) as cus_abandon,
sum(case when cus_status='签约' then 1 else 0 end) as cus_sign ,
sum(case when cus_status='已放弃' then 1 else 0 end) as cus_abandon,
from min_customs where datepart(yy,cus_time)='2014'
group by datepart(mm,cus_time)
#9
恩!@alimake的理解是对的!
但现在只是显示有数据的页面,我想显示的是所有月份的行,不管里面有没有数据!有个字段标志每一行是几月份!再次求指点~~~ 实现的我再会20分给大家的!谢谢
但现在只是显示有数据的页面,我想显示的是所有月份的行,不管里面有没有数据!有个字段标志每一行是几月份!再次求指点~~~ 实现的我再会20分给大家的!谢谢
#10
select
sum(case when cus_status='未确认' then 1 else 0 end) as cus_none,
sum(case when cus_status='确认' then 1 else 0 end) as cus_confirm ,
sum(case when cus_status='看房' then 1 else 0 end) as cus_abandon,
sum(case when cus_status='签约' then 1 else 0 end) as cus_sign ,
sum(case when cus_status='已放弃' then 1 else 0 end) as cus_abandon,month(cus_time) as yue
from min_customs where datepart(yy,cus_time)='2014'
group by datepart(mm,cus_time),month(cus_time)
月份已经出来了!只差显示的是所有月份的行,不管里面有没有数据!! 帮帮忙,大家!!!
#11
SELECT a.number AS yue,
b.cus_none ,
b.cus_confirm ,
b.cus_abandon ,
b.cus_sign ,
b.cus_abandon
FROM ( SELECT number
FROM master..spt_values P
WHERE type = 'P'
AND number BETWEEN 1 AND 12
) a
LEFT JOIN ( SELECT SUM(CASE WHEN cus_status = '未确认' THEN 1
ELSE 0
END) AS cus_none ,
SUM(CASE WHEN cus_status = '确认' THEN 1
ELSE 0
END) AS cus_confirm ,
SUM(CASE WHEN cus_status = '看房' THEN 1
ELSE 0
END) AS cus_abandon ,
SUM(CASE WHEN cus_status = '签约' THEN 1
ELSE 0
END) AS cus_sign ,
SUM(CASE WHEN cus_status = '已放弃' THEN 1
ELSE 0
END) AS cus_abandon ,
MONTH(cus_time) AS yue
FROM min_customs
WHERE DATEPART(yy, cus_time) = '2014'
GROUP BY DATEPART(mm, cus_time) ,
MONTH(cus_time)
) b ON a.number = b.yue
参考
#12
@OrchidCat,非常感谢!已经出来了!
但是nullif不管用,我想将字段为null改为数字0!!大家能帮我再看一下吗?谢谢!
但是nullif不管用,我想将字段为null改为数字0!!大家能帮我再看一下吗?谢谢!
#13
SELECT a.number AS yue,
isnull( b.cus_none ,0),
isnull(b.cus_confirm ,0),
isnull(b.cus_abandon ,0),
isnull( b.cus_sign ,0),
isnull( b.cus_abandon,0)
FROM ( SELECT number
FROM master..spt_values P
WHERE type = 'P'
AND number BETWEEN 1 AND 12
) a
LEFT JOIN ( SELECT SUM(CASE WHEN cus_status = '未确认' THEN 1
ELSE 0
END) AS cus_none ,
SUM(CASE WHEN cus_status = '确认' THEN 1
ELSE 0
END) AS cus_confirm ,
SUM(CASE WHEN cus_status = '看房' THEN 1
ELSE 0
END) AS cus_abandon ,
SUM(CASE WHEN cus_status = '签约' THEN 1
ELSE 0
END) AS cus_sign ,
SUM(CASE WHEN cus_status = '已放弃' THEN 1
ELSE 0
END) AS cus_abandon ,
MONTH(cus_time) AS yue
FROM min_customs
WHERE DATEPART(yy, cus_time) = '2014'
GROUP BY DATEPART(mm, cus_time) ,
MONTH(cus_time)
) b ON a.number = b.yue
试试
isnull( b.cus_none ,0),
isnull(b.cus_confirm ,0),
isnull(b.cus_abandon ,0),
isnull( b.cus_sign ,0),
isnull( b.cus_abandon,0)
FROM ( SELECT number
FROM master..spt_values P
WHERE type = 'P'
AND number BETWEEN 1 AND 12
) a
LEFT JOIN ( SELECT SUM(CASE WHEN cus_status = '未确认' THEN 1
ELSE 0
END) AS cus_none ,
SUM(CASE WHEN cus_status = '确认' THEN 1
ELSE 0
END) AS cus_confirm ,
SUM(CASE WHEN cus_status = '看房' THEN 1
ELSE 0
END) AS cus_abandon ,
SUM(CASE WHEN cus_status = '签约' THEN 1
ELSE 0
END) AS cus_sign ,
SUM(CASE WHEN cus_status = '已放弃' THEN 1
ELSE 0
END) AS cus_abandon ,
MONTH(cus_time) AS yue
FROM min_customs
WHERE DATEPART(yy, cus_time) = '2014'
GROUP BY DATEPART(mm, cus_time) ,
MONTH(cus_time)
) b ON a.number = b.yue
试试
#14
ok!我怎么没想到!谢谢大家了!
#15
共同学习啊 刚入行IT啊 就知道一点T-SQL 其他 复制 备份 啥的 完全不懂啊
#1
datediff(
yy,
#2
1-12月的数据 你想怎么排?显示成什么样子?
#3
如果还是这样的话
select
sum(case when cus_status='未确认' then 1 else 0 end) as cus_none,
sum(case when cus_status='确认' then 1 else 0 end) as cus_confirm ,
sum(case when cus_status='看房' then 1 else 0 end) as cus_abandon,
sum(case when cus_status='签约' then 1 else 0 end) as cus_sign ,
sum(case when cus_status='已放弃' then 1 else 0 end) as cus_abandon
from min_customs where datediff(year,cus_time,getdate())=0
#4
不是的,应该是每一个月
“未确认、确认、看房、签约、已放弃”这些字段的数据总和,总共有12个月!这是我要做C#折线图要用到的!是我没说清楚,你能帮我再看一下吗?谢谢!
#5
将字段为null该为0,还有这个问题??帮忙看一下,谢谢!
#6
nullif()不能实现!我试过了!
#7
假设你的数据只有2014年的。
select yuefen,cus_status,count(cus_status) as amount from (
select month(cus_time) as yuefen,cus_status from min_customs
) as a group by yuefen,cus_status order by yuefen
如果不是你要的结果,你还是把结果贴出来,不然不知道你要的是什么。
select yuefen,cus_status,count(cus_status) as amount from (
select month(cus_time) as yuefen,cus_status from min_customs
) as a group by yuefen,cus_status order by yuefen
如果不是你要的结果,你还是把结果贴出来,不然不知道你要的是什么。
#8
感觉楼主是想要2014年 对月份分组, 然后得出各个状态的的行数。
select
sum(case when cus_status='未确认' then 1 else 0 end) as cus_none,
sum(case when cus_status='确认' then 1 else 0 end) as cus_confirm ,
sum(case when cus_status='看房' then 1 else 0 end) as cus_abandon,
sum(case when cus_status='签约' then 1 else 0 end) as cus_sign ,
sum(case when cus_status='已放弃' then 1 else 0 end) as cus_abandon,
from min_customs where datepart(yy,cus_time)='2014'
group by datepart(mm,cus_time)
select
sum(case when cus_status='未确认' then 1 else 0 end) as cus_none,
sum(case when cus_status='确认' then 1 else 0 end) as cus_confirm ,
sum(case when cus_status='看房' then 1 else 0 end) as cus_abandon,
sum(case when cus_status='签约' then 1 else 0 end) as cus_sign ,
sum(case when cus_status='已放弃' then 1 else 0 end) as cus_abandon,
from min_customs where datepart(yy,cus_time)='2014'
group by datepart(mm,cus_time)
#9
恩!@alimake的理解是对的!
但现在只是显示有数据的页面,我想显示的是所有月份的行,不管里面有没有数据!有个字段标志每一行是几月份!再次求指点~~~ 实现的我再会20分给大家的!谢谢
但现在只是显示有数据的页面,我想显示的是所有月份的行,不管里面有没有数据!有个字段标志每一行是几月份!再次求指点~~~ 实现的我再会20分给大家的!谢谢
#10
select
sum(case when cus_status='未确认' then 1 else 0 end) as cus_none,
sum(case when cus_status='确认' then 1 else 0 end) as cus_confirm ,
sum(case when cus_status='看房' then 1 else 0 end) as cus_abandon,
sum(case when cus_status='签约' then 1 else 0 end) as cus_sign ,
sum(case when cus_status='已放弃' then 1 else 0 end) as cus_abandon,month(cus_time) as yue
from min_customs where datepart(yy,cus_time)='2014'
group by datepart(mm,cus_time),month(cus_time)
月份已经出来了!只差显示的是所有月份的行,不管里面有没有数据!! 帮帮忙,大家!!!
#11
SELECT a.number AS yue,
b.cus_none ,
b.cus_confirm ,
b.cus_abandon ,
b.cus_sign ,
b.cus_abandon
FROM ( SELECT number
FROM master..spt_values P
WHERE type = 'P'
AND number BETWEEN 1 AND 12
) a
LEFT JOIN ( SELECT SUM(CASE WHEN cus_status = '未确认' THEN 1
ELSE 0
END) AS cus_none ,
SUM(CASE WHEN cus_status = '确认' THEN 1
ELSE 0
END) AS cus_confirm ,
SUM(CASE WHEN cus_status = '看房' THEN 1
ELSE 0
END) AS cus_abandon ,
SUM(CASE WHEN cus_status = '签约' THEN 1
ELSE 0
END) AS cus_sign ,
SUM(CASE WHEN cus_status = '已放弃' THEN 1
ELSE 0
END) AS cus_abandon ,
MONTH(cus_time) AS yue
FROM min_customs
WHERE DATEPART(yy, cus_time) = '2014'
GROUP BY DATEPART(mm, cus_time) ,
MONTH(cus_time)
) b ON a.number = b.yue
参考
#12
@OrchidCat,非常感谢!已经出来了!
但是nullif不管用,我想将字段为null改为数字0!!大家能帮我再看一下吗?谢谢!
但是nullif不管用,我想将字段为null改为数字0!!大家能帮我再看一下吗?谢谢!
#13
SELECT a.number AS yue,
isnull( b.cus_none ,0),
isnull(b.cus_confirm ,0),
isnull(b.cus_abandon ,0),
isnull( b.cus_sign ,0),
isnull( b.cus_abandon,0)
FROM ( SELECT number
FROM master..spt_values P
WHERE type = 'P'
AND number BETWEEN 1 AND 12
) a
LEFT JOIN ( SELECT SUM(CASE WHEN cus_status = '未确认' THEN 1
ELSE 0
END) AS cus_none ,
SUM(CASE WHEN cus_status = '确认' THEN 1
ELSE 0
END) AS cus_confirm ,
SUM(CASE WHEN cus_status = '看房' THEN 1
ELSE 0
END) AS cus_abandon ,
SUM(CASE WHEN cus_status = '签约' THEN 1
ELSE 0
END) AS cus_sign ,
SUM(CASE WHEN cus_status = '已放弃' THEN 1
ELSE 0
END) AS cus_abandon ,
MONTH(cus_time) AS yue
FROM min_customs
WHERE DATEPART(yy, cus_time) = '2014'
GROUP BY DATEPART(mm, cus_time) ,
MONTH(cus_time)
) b ON a.number = b.yue
试试
isnull( b.cus_none ,0),
isnull(b.cus_confirm ,0),
isnull(b.cus_abandon ,0),
isnull( b.cus_sign ,0),
isnull( b.cus_abandon,0)
FROM ( SELECT number
FROM master..spt_values P
WHERE type = 'P'
AND number BETWEEN 1 AND 12
) a
LEFT JOIN ( SELECT SUM(CASE WHEN cus_status = '未确认' THEN 1
ELSE 0
END) AS cus_none ,
SUM(CASE WHEN cus_status = '确认' THEN 1
ELSE 0
END) AS cus_confirm ,
SUM(CASE WHEN cus_status = '看房' THEN 1
ELSE 0
END) AS cus_abandon ,
SUM(CASE WHEN cus_status = '签约' THEN 1
ELSE 0
END) AS cus_sign ,
SUM(CASE WHEN cus_status = '已放弃' THEN 1
ELSE 0
END) AS cus_abandon ,
MONTH(cus_time) AS yue
FROM min_customs
WHERE DATEPART(yy, cus_time) = '2014'
GROUP BY DATEPART(mm, cus_time) ,
MONTH(cus_time)
) b ON a.number = b.yue
试试
#14
ok!我怎么没想到!谢谢大家了!
#15
共同学习啊 刚入行IT啊 就知道一点T-SQL 其他 复制 备份 啥的 完全不懂啊