题一: 用SQL写一段代码,输入字符串"abc,asdfj",则输出字符串"abc",即只输出输入字符串里","前面的字符,如果输入字符串里不包括","则输出原字符串。
题二:
表1:部门表
Departments
{
    int id,
    varchar(50) Name
}
表2:雇员表
Employees
{
   int id,
   int  DepartmentsID,    (部门外键)
   float Wage              (工资)
}  查询各个部门 部门名称 ,员工数,员工工资总和,员工最高工资,最低工资,平均工资求高手速秒

解决方案 »

  1.   

    1.
    declare @s as varchar(20)
    set @s = 'abc,asdfj'select case when charindex(',',@s) > 0 then left(@s , charindex(',',@s) - 1) else @s end/*
                         
    -------------------- 
    abc(所影响的行数为 1 行)
    */
      

  2.   

    2.select m.Name 部门名称, 
           count(1) 员工数 , 
           sum(n.Wage) 员工工资总和 , 
           max(n.Wage) 最高工资,
           min(n.Wage) 最低工资,
           avg(n.wage) 平均工资
    from Departments m , Employees n
    where m.id = n.id
    group by m.Name
      

  3.   

    问个问题...上面的SQL语句,是MS-SQL特有,还是公用SQL语句?因为该公司主要用Oracle,而我平时都用MS_SQL
      

  4.   

    --2
    select a.name 部门名称,count(1) as 员工数,sum(Wage) as 员工工资总和,
      max(wage) as 员工最高工资,min(wage) as 员工最低工资,avg(wage) as 平均工资
    from 
      部门表 a,
        雇员表 b
    where a.id=b.DepartmentsID
    group by a.name
      

  5.   

    2.
    --不考虑每个部门是否都有员工。没有员工的不显示。
    select m.Name 部门名称, 
           count(1) 员工数 , 
           sum(n.Wage) 员工工资总和 , 
           max(n.Wage) 最高工资,
           min(n.Wage) 最低工资,
           avg(n.wage) 平均工资
    from Departments m , Employees n
    where m.id = n.id
    group by m.Name--考虑可能某部门一个员工也没有,没有员工的显示为NULL。
    select m.name , t.员工数,t.员工工资总和,t.最高工资,t.最低工资,t.平均工资 
    from Departments m left join
    (
    select n.id, 
           count(1) 员工数 , 
           sum(n.Wage) 员工工资总和 , 
           max(n.Wage) 最高工资,
           min(n.Wage) 最低工资,
           avg(n.wage) 平均工资
    from Employees n
    group by n.id
    ) t
    on m.id = n.id
      

  6.   

    如果是oracle则为:select case when instr(@s,',') > 0 then substr(@s , instr(@s,',') - 1) else @s end
      

  7.   


    如果是oracle则为:select case when instr(@s,',') > 0 then substr(@s , instr(@s,',') - 1) else @s end from dual;