select * from table where indate>起始时间 and indate<now()
解决方案 »
- 问一个很简单的指针赋值问题
- SQL存取 .png格式的图片
- [[简单问题,大家给个方法了!]]数据录入窗体中数据要录入的数据分别是“高”、“中”、“低”,如何在存入数据库时存为“1” 、 “2”、
- 求教句子格式啊!!在线等
- 寻求delphi界面控件
- 征求建议和思路
- 数组问题
- 怎样将Delphi程序模块化啊?
- 用我仅有的30分求助,如何动态动设置打印机的纸张大小??????????
- 如何控制:输入EDIT控件中的值能作为DATETIME格式的值,并当输入为字符时,如何处理异常?
- SQL Server 中GetDate()得到的是日期同时间,如何切成日期和时间?立即解决立即给分!
- 键盘“O”坏了,在打字时如何借用其他键输入?比如F8、F9等!
在职人数=Sum(Case When State='1' Then 1 Else 0 End)
From employee
Where Indate>=起始时间参数
and Indate<=GetDate()
Group by Convert(varchar(7),Indate,102)
Order by Convert(varchar(7),Indate,102)
注意起始时间参数与Indate的格式,最好统一转换为字符串比较
在职人数=Sum(Case When State='1' Then 1 Else 0 End)
From employee
Where Indate>=起始时间参数
and Indate<=GetDate()
Group by Convert(varchar(7),Indate,102)
Order by Convert(varchar(7),Indate,102)
注意起始时间参数与Indate的格式,最好统一转换为字符串比较
indate state
------------------------------------------------------
2001-03-19 10:45:22.000 1
2001-05-10 10:45:22.000 0
2001-11-11 10:45:22.000 1
2002-01-21 10:45:22.000 1
2002-04-25 10:45:22.000 1
2002-06-08 10:45:22.000 0
2002-06-12 10:45:22.000 1
2002-06-15 10:45:22.000 1
2002-07-11 10:45:22.000 1
2002-07-12 10:45:22.000 1
2002-07-16 10:45:22.000 1
要求是这样的结果集
时间段(按月) 在职人数
------------------------------------------------------
2001.03 1
2001.04 1
2001.05 1
...
2002.6 6
2002.7 9
where 时间段>'起始时间'
and 时间段<Now
group by 时间段
谢谢你,我试了你的语句,可以查询出各个月的入职的人数,也就是说,你现在的语句查出来的是每个月的入职的人数,不是这个月的在职人数
你的语句查询结果如下
时间段 在职人数
------- -----------
2002.01 2
2002.02 2
2002.03 2
2002.04 2
2002.06 0
2002.07 1
现在要求的结果是下面这样的
时间段 在职人数
------- -----------
2002.01 2
2002.02 4
2002.03 6
2002.04 8
2002.06 0
2002.07 9也就是说要下个月的‘在职’人数 = 上月‘在职’人数 + 该月的‘入职’人数
Sum(case when State='1' then 1 else 0 end)
from employee
where Indate>=起始时间参数 and Indate<=GetDate()
order by Indate
FROM EMPLOYEE A,
(SELECT COUNT(*) EMP_COUNT
FROM EMPLOYEE C
WHERE TO_CHAR(C.INDATE,'YYYY.MM')
=TO_CHAR(A.INDATE,'YYYY.MM')
AND C.STATE='1'
) B
WHERE TO_CHAR(A.INDATE,'YYYY.MM')
>=TO_CHAR(PARAM_DATE,'YYYY.MM')
PARAM_DATE 為用戶給的初始日期,
你的结果与阿宝的结果一样的,求的都是入职人数, 不是在职人数
你好!
你的to_char是个自定义函数吧,到我这里不通
你的结果如下,也不对
时间段 在职人数
------- -----------
2002.01 9
2002.02 9
2002.03 9
2002.04 9
2002.06 9
2002.07 9
Name Type Nullable Default Comments
------ ----------- -------- ------- --------
INDATE DATE Y
STATE VARCHAR2(1) Y 數據:
INDATE STATE
---------- -----
2001.03.19 1
2001.05.10 0
2001.11.11 1
2002.01.21 1
2002.04.25 1
2002.06.08 0
2002.06.12 1
2002.06.15 1
2002.07.11 1
2002.07.12 1
2002.07.16 1 SQL語句:
--------------------------------------------------------
SELECT DISTINCT TO_CHAR(A.INDATE,'YYYY.MM') MONTH,
(SELECT COUNT(*) EMP_COUNT
FROM TEST_YLM B
WHERE TO_CHAR(B.INDATE,'YYYY.MM')
<=TO_CHAR(A.INDATE,'YYYY.MM')
AND STATE='1'
) EMP_COUNT
FROM TEST_YLM A
WHERE TO_CHAR(A.INDATE,'YYYY.MM')>='2001.01'
結果:
_____________________________________________________
MONTH EMP_COUNT
------- ----------
2001.03 1
2001.05 1
2001.11 2
2002.01 3
2002.04 4
2002.06 6
2002.07 9
your answer is correct.thank you for your help.你现在写的已经很好用了, 如果你要是能象我说的那样,把从开始日期到现在按月都列出来,不管那个月有没有人入职,都列出来就更完美了,比如你上面的查询结果要是下面这样就更漂亮了:
MONTH EMP_COUNT
------- ----------
2001.03 1
2001.04 1
2001.05 1
2001.06 1
2001.07 1
2001.08 1
2001.09 1
2001.10 1
2001.11 2
2001.12 2
2002.01 3
2002.02 3
2002.03 3
2002.04 4
2002.05 4
2002.06 6
2002.07 9
再呆一会如果没有人答,就结贴