我有二表,表1 有姓名,单位ID,ID     
        表2 有单位,ID 
        表3 有ID  标题, 姓名ID,添加时间
我想找出  表3中,我想找出一个单位2008年6月份有多少条数据,用Count(*)就行了  其中表2和表1是主从表,表3和表1是主从表~
大家即兴发挥,有点急,大家帮下,前几天我还给灾区献了血地,相信有不少朋友也会帮帮我~~

解决方案 »

  1.   

    Select Count(*) From 表3 Where 添加时间 < "2008-7-1" and 添加时间 > "2008-6-1" and 姓名ID in (Select 姓名ID From 表1 Where 单位ID = ?)
      

  2.   

    select b.单位,count(*) from 表1 a, 表2 b,表3 c
    where a.单位ID=b.id and c.姓名ID=a.id
    and convert(varchar(7),添加时间,120)='2008-06'
      

  3.   

                                     
     
     
      
                              string str="厉害";
      

  4.   

    select count(*) from 表3
    join 表3.姓名ID = 表1.ID 
    join 表2.ID = 表1.单位ID
    where Convert(varchar(7),表3.添加时间,120) =  '2008-06'
    and 表2.单位 = ?
      

  5.   

    select b.单位,count(*) from 表1 a, 表2 b,表3 c
    where a.单位ID=b.id and c.姓名ID=a.id
    and convert(varchar(7),添加时间,112)='200806'
      

  6.   

    楼上的是不是少了个 Group By?
    select b.ID, b.单位, count(c. *) from 表1 a, 表2 b,表3 c 
    where a.单位ID=b.id and c.姓名ID=a.id 
    and convert(varchar(7),添加时间,112)='200806'
    Group by b.ID, b.单位
      

  7.   

    这样应该可以了吧Table1: ID DepartId UserName
    Table2: ID Department
    Table3: ID Title UserId AddTimeSelect DepartId,count(*) as TotalNum from (
    Select a.ID,c.ID as DepartId,a.AddTime 
    from Table3 a 
    inner join Table1 b on a.UserId=b.ID 
    inner join Table2 c on b.DepartId=c.ID) aa 
    group by DepartId 
    where DATENAME(year, AddTime)=2008 and DATENAME(month, AddTime)=6
      

  8.   

    select b.单位,count(1) as '行数' from 
    表1 a join 表2 b on a.单位id=b.单位id
    join 表3 c on a.姓名id=c.姓名id
    where c.添加时间 >='2008-06-01' and c.添加时间<'2008-07-01'
      

  9.   

    select b.单位,count(1) as '行数' from 
    表1 a join 表2 b on a.单位id=b.单位id
    join 表3 c on a.姓名id=c.姓名id
    where c.添加时间 >='2008-06-01' and c.添加时间<'2008-07-01'我晕,csdn都什么啊
      

  10.   

    select b.单位,count(1) as '行数' from 
    表1 a join 表2 b on a.单位id=b.单位id
    join 表3 c on a.姓名id=c.姓名id
    where c.添加时间 >='2008-06-01' and c.添加时间<'2008-07-01'日,sql代码出错了....csdn又完蛋了
      

  11.   

    select b.单位,count(*) from 表1 a, 表2 b,表3 c 
    where a.单位ID=b.id and c.姓名ID=a.id 
    and convert(varchar(6),添加时间,112)='200806'varchar(6),刚才错了.写成7了,
      

  12.   

    13楼的思路是对了,其实我是想统计出某单位月或年的记录数,时间没必要变成字符串,Year(时间字段)
    month(时间字段)  这二个分别提取出年和月 还有朋友写好了么? 13楼的语法错误了,我只不不太清楚什么JION IN的用法
      

  13.   

    Select Count(*) From 表3 Where 添加时间 < "2008-7-1" and 添加时间 > "2008-6-1" and 姓名ID in (Select 姓名ID From 表1 Where 单位ID = ?)
      

  14.   

    这个SQLserver一定可以 ?表示你要找的单位的 ID
      

  15.   

    说错了,好像11楼是对的~~不过在WHTER错了~~
      

  16.   


    /*建立测试表*/
    CREATE TABLE #A
    (
    姓名ID INT,
    单位ID INT,
    姓名 VARCHAR(50)
    ) CREATE TABLE #B
    (
    单位ID INT,
    单位 VARCHAR(50)
    ) CREATE TABLE #C
    (
    ID INT,
    标题 VARCHAR(50),
    姓名ID INT,
    添加时间 DATETIME
    ) /*插入测试数据*/
    INSERT INTO #A VALUES(1,1001,'张三')
    INSERT INTO #A VALUES(2,1001,'李四')
    INSERT INTO #A VALUES(3,1002,'王五')
    INSERT INTO #A VALUES(4,1001,'马六')
    INSERT INTO #A VALUES(5,1003,'赵八')
    INSERT INTO #A VALUES(6,1003,'胡九')INSERT INTO #B VALUES(1001,'国美')
    INSERT INTO #B VALUES(1002,'永乐')
    INSERT INTO #B VALUES(1003,'沃尔玛')INSERT INTO #C VALUES(101,'国美国美国美国美国美',1,'2008-03-29 13:37:58.057')
    INSERT INTO #C VALUES(102,'国美国美国美国美国美',2,'2008-04-29 13:37:58.057')
    INSERT INTO #C VALUES(103,'国美国美国美国美国美',3,'2008-03-27 13:37:58.057')
    INSERT INTO #C VALUES(104,'国美国美国美国美国美',2,'2008-04-10 13:37:58.057')
    INSERT INTO #C VALUES(105,'国美国美国美国美国美',3,'2008-05-29 13:37:58.057')
    INSERT INTO #C VALUES(106,'国美国美国美国美国美',4,'2008-06-25 13:37:58.057')
    INSERT INTO #C VALUES(107,'国美国美国美国美国美',6,'2008-06-29 13:37:58.057')
    INSERT INTO #C VALUES(108,'国美国美国美国美国美',4,'2008-06-10 13:37:58.057')
    INSERT INTO #C VALUES(109,'国美国美国美国美国美',6,'2008-06-04 13:37:58.057')
    INSERT INTO #C VALUES(110,'国美国美国美国美国美',4,'2008-07-29 13:37:58.057')
    INSERT INTO #C VALUES(111,'国美国美国美国美国美',3,'2008-07-12 13:37:58.057')
    INSERT INTO #C VALUES(112,'国美国美国美国美国美',1,'2008-07-15 13:37:58.057')
    INSERT INTO #C VALUES(113,'国美国美国美国美国美',2,'2008-07-19 13:37:58.057')
    INSERT INTO #C VALUES(114,'国美国美国美国美国美',3,'2008-06-04 13:37:58.057')
    INSERT INTO #C VALUES(115,'国美国美国美国美国美',1,'2008-06-23 13:37:58.057')
    INSERT INTO #C VALUES(116,'国美国美国美国美国美',3,'2008-08-19 13:37:58.057')
    INSERT INTO #C VALUES(117,'国美国美国美国美国美',3,'2008-08-14 13:37:58.057')
    INSERT INTO #C VALUES(118,'国美国美国美国美国美',6,'2008-08-21 13:37:58.057')
    INSERT INTO #C VALUES(119,'国美国美国美国美国美',1,'2008-08-25 13:37:58.057')
    INSERT INTO #C VALUES(120,'国美国美国美国美国美',6,'2008-06-11 13:37:58.057')
    INSERT INTO #C VALUES(121,'国美国美国美国美国美',2,'2008-06-01 13:37:58.057')
    INSERT INTO #C VALUES(122,'国美国美国美国美国美',3,'2008-05-17 13:37:58.057')
    --查出2008年6月份符合条件的信息
    SELECT #B.单位,COUNT(*) AS 人数 FROM #C INNER JOIN #A ON #A.姓名ID=#C.姓名ID 
    INNER JOIN #B ON #A.单位ID=#B.单位ID WHERE #C.添加时间>'2008-06-01' GROUP BY #B.单位 --查出2008年符合条件的信息
    SELECT #B.单位,COUNT(*) AS 人数 FROM #C INNER JOIN #A ON #A.姓名ID=#C.姓名ID 
    INNER JOIN #B ON #A.单位ID=#B.单位ID WHERE #C.添加时间>'2008-01-01' GROUP BY #B.单位 
      

  17.   

    刚才发的查询错了,应该是这个:
    --查出2008年6月份符合条件的信息
    SELECT #B.单位,COUNT(*) AS 人数 FROM #C INNER JOIN #A ON #A.姓名ID=#C.姓名ID 
    INNER JOIN #B ON #A.单位ID=#B.单位ID WHERE #C.添加时间>'2008-06-01' AND #C.添加时间<'2008-07-01' GROUP BY #B.单位 --查出2008年符合条件的信息
    SELECT #B.单位,COUNT(*) AS 人数 FROM #C INNER JOIN #A ON #A.姓名ID=#C.姓名ID 
    INNER JOIN #B ON #A.单位ID=#B.单位ID WHERE #C.添加时间>'2008-01-01' AND #C.添加时间<'2008-01-01' GROUP BY #B.单位 
      

  18.   


    select b.ID, b.单位, count(c. *) from 表1 a, 表2 b,表3 c 
    where a.单位ID=b.id and c.姓名ID=a.id 
    and convert(varchar(7),添加时间,112)='200806'
    Group by b.ID, b.单位