如何用一条语句查出??????????

rabbitisme 2004-08-09 10:56:09
共发出批量招聘信息 while typeid=0

条 15 条

正在批量招聘信息:while typeid=1

5 条

停止批量招聘信息: while typeid=2

10条



我想用一条语句查出这些信息的条数,能实现吗?

...全文
409 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabbitisme 2004-08-09
  • 打赏
  • 举报
回复
select count(*) as '共发出批量招聘信息',
case when DATEDIFF(DAY,ADD_DATE,GETDATE())<=AV_DAYS then count(*) end as '正在批量招聘信息',
case when DATEDIFF(DAY,ADD_DATE,GETDATE())>AV_DAYS then count(*) end as '停止批量招聘信息'
from Co_Invite where co_usename='$004'

yyhyy23(yyhyy23) 出错哦~~~~

服务器: 消息 8118,级别 16,状态 1,行 1
列 'Co_Invite.ADD_DATE' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
服务器: 消息 8118,级别 16,状态 1,行 1
列 'Co_Invite.AV_DAYS' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
服务器: 消息 8118,级别 16,状态 1,行 1
列 'Co_Invite.ADD_DATE' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
服务器: 消息 8118,级别 16,状态 1,行 1
列 'Co_Invite.AV_DAYS' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。
yyhyy23 2004-08-09
  • 打赏
  • 举报
回复
语法有点问题,不过,你上面报的错误,是sqlserver连接问题,与sql语句没有关系
yyhyy23 2004-08-09
  • 打赏
  • 举报
回复
select count(*) as '共发出批量招聘信息',
case when DATEDIFF(DAY,ADD_DATE,GETDATE())<=AV_DAYS then count(*) end as '正在批量招聘信息',
case when DATEDIFF(DAY,ADD_DATE,GETDATE())>AV_DAYS then count(*) end as '停止批量招聘信息'
from Co_Invite where co_usename='$004'
rabbitisme 2004-08-09
  • 打赏
  • 举报
回复
select count(*) as '共发出批量招聘信息',
when case DATEDIFF(DAY,ADD_DATE,GETDATE())<=AV_DAYS then count(*) end as '正在批量招聘信息',
when case DATEDIFF(DAY,ADD_DATE,GETDATE())>AV_DAYS then count(*) end as '停止批量招聘信息'
from Co_Invite where co_usename='$004'


我这样写

[Microsoft][ODBC SQL Server Driver][DBNETLIB]SQL Server 不存在或访问被拒绝
服务器: 消息 53,级别 16,状态 1,行 0
[Microsoft][ODBC SQL Server Driver][DBNETLIB]ConnectionOpen (Connect()).

连接中断


:(
qq3080 2004-08-09
  • 打赏
  • 举报
回复
select case typeid when 0 then count(*) end as '共发出批量招聘信息',
case typeid when 1 then count(*) end as '正在批量招聘信息',
case typeid when 2 then count(*) end as '停止批量招聘信息'
from yourtable group by typeid
rabbitisme 2004-08-09
  • 打赏
  • 举报
回复
是这样的

有个字段ADD_DAY(加入时间)
AV_DAY(有效时间)

共发出批量招聘信息':不需要其它条件
正在批量招聘信息':DATEDIFF(DAY,ADD_DAY,GETDATE())<=AV_DAY
停止批量招聘信息' :DATEDIFF(DAY,ADD_DAY,GETDATE())>AV_DAY

我想一次性查出它们有多少条,是要COUNT的呀!~~
simonvc 2004-08-09
  • 打赏
  • 举报
回复
一条记录返回三个结果
select case when typeid=0 then count(*) else 0 end as 共发出批量招聘信息,
when typeid=1 then count(*) else 0 end as 正在批量招聘信息,
when typeid=2 then count(*) else 0 end as 停止批量招聘信息
from YourTable group by typeid

如果要返回三个结果, 这里可能存在一个问题, 如果 "共发出批量招聘信息" 或 "正在批量招聘信息" 或 "停止批量招聘信息"其中有一个没有记录的话, 就不能返回三个记录结果, 但可以通过typeid知道是哪个类型的记录结果:
select typeid,
case when typeid=0 then count(*)
when typeid=1 then count(*)
when typeid=2 then count(*)
end as RecordCount
from YourTable group by typeid

这样的答案还不行吗 ?
rabbitisme 2004-08-09
  • 打赏
  • 举报
回复
wanyingsong(豌豆) ( )

这样好像可以哦,我试试
qq3080 2004-08-09
  • 打赏
  • 举报
回复
select case typeid when 0 then num end as '共发出批量招聘信息',
case typeid when 1 then num end as '正在批量招聘信息',
case typeid when 2 then num end as '停止批量招聘信息'
from yourtable
rabbitisme 2004-08-09
  • 打赏
  • 举报
回复
不行啊,这样写执行一次也只能得出一个结果~~~并不是三个结果啊。
老宛 2004-08-09
  • 打赏
  • 举报
回复
select (case typeid when 0 then num end) as '共发出批量招聘信息',(case typeid when 1 then num end) as '正在批量招聘信息',(case typeid when 2 then num end) as '停止批量招聘信息' from (select typeid,count(*) as num from yourtable group by typeid) a
simonvc 2004-08-09
  • 打赏
  • 举报
回复
select case when typeid=0 then count(*) else 0 end as TypeID1,
when typeid=1 then count(*) else 0 end as TypeID2,
when typeid=2 then count(*) else 0 end as TypeID3
from YourTable group by typeid
老宛 2004-08-09
  • 打赏
  • 举报
回复
select typeid,count(*) from yourtable group by typeid
simonvc 2004-08-09
  • 打赏
  • 举报
回复
不好意思, 考虑不周, 修改如下:
select case when typeid=0 then count(*) else 0 end as TypeID1,
when typeid=1 then count(*) else 0 end as TypeID2,
when typeid=2 then count(*) else 0 end as TypeID3
from YourTable

得到结果可能是这样:
TypeID1 TypeID2 TypeID3
10 20 30

simonvc 2004-08-09
  • 打赏
  • 举报
回复
select case when typeid=0 then count(*)
when typeid=1 then count(*)
when typeid=2 then count(*)
end as RecordCount
from YourTable

得到结果可能是这样:
RecordCount
10
20
30
viptiger 2004-08-09
  • 打赏
  • 举报
回复
select typeid,count(*) from YouTable
group by typeid
viptiger 2004-08-09
  • 打赏
  • 举报
回复
select * from YouTable
where typeid in (0,1,2)
rabbitisme 2004-08-09
  • 打赏
  • 举报
回复
lym51(老玉米) (

只能如此了,谢谢~~~~~
1老玉米1 2004-08-09
  • 打赏
  • 举报
回复
SELECT COUNT(*) AS '共发出批量招聘信息',(SELECT COUNT(*) FROM Co_Invite WHERE DATEDIFF(DAY, ADD_DATE, GETDATE()) <= AV_DAYS) AS '正在批量招聘信息',(SELECT COUNT(*) FROM Co_Invite WHERE DATEDIFF(DAY, ADD_DATE, GETDATE()) > AV_DAYS) AS '停止批量招聘信息' FROM Co_Invite
shiningpolarstar 2004-08-09
  • 打赏
  • 举报
回复
select typeid,count(*) from yourtable group by typeid

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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