sql语句要怎么写
发布网友
发布时间:2022-04-26 18:57
我来回答
共4个回答
热心网友
时间:2023-10-22 06:18
use Tempdb
go
--> -->
if not object_id(N'Tempdb..#') is null
drop table #
Go
Create table #([公司名] nvarchar(3),[名单] nvarchar(2))
Insert #
select N'A公司',N'张三' union all
select N'A公司',N'李四' union all
select N'B公司',N'张五' union all
select N'B公司',N'赵六'
Go
Select [公司名], [名单]=STUFF((SELECT ','+名单 FROM # WHERE 公司名=a.公司名 FOR XML PATH('')),1,1,'')
from # AS a
GROUP BY [公司名]
/*
(4 个资料列受到影响)
公司名 名单
---- --------------------------
A公司 张三,李四
B公司 张五,赵六
(2 个资料列受到影响)
*/
热心网友
时间:2023-10-22 06:18
如果是oracle 10g后的版本
select 公司名,wmsys.wm_concat(名单) from 表 group by 公司名
如果是其他的,可能要写存储过程
给你个oracle的函数,应该和SQL SERVER差不多,仿照写下吧
create or replace function my_concat(mid in integer) return varchar2
is
result varchar2(4000);
begin
for temp_cursor in (select role from table2 where id=mid) loop --此处在游标FOR循环中使用查询
result :=result || temp_cursor.role || ','; --Oracle中字符连接使用||,而sql server中用+
end loop;
result := rtrim(result,','); --去掉最后一个空格,还有Oracle中的赋值前面没有set
return result;
end;
select table1.*,my_concat(table1.id) from table1,table2 where table1.id=table2.id
group by table1.id,table1.name
order by table1.id
热心网友
时间:2023-10-22 06:19
挖!!!!!!!!!
专家就是厉害。。我是你的粉丝了。
我搞了半个小时都没实现。。
刷新了一下,看见专家的答案。。。唉。。
热心网友
时间:2023-10-22 06:19
首先,要得到,一个月的倒数第二天啊
select
last_day(sysdate)-1
from
al
用last_day
函数,得到最后一天,然后,再
减去1
就得到
一个月的倒数第二天。
第二个问题,是,要对表中出现的月
都
要
进行
倒数第二天的计算
select
distinct(
last_day(到职日期)-1)
from
员工信息
这个检索的语句,就是,得到
表中,各个月的倒数第二天。
最后的SQL就是
select
*
from
员工信息
where
到职日期
in
(
select
distinct(
last_day(到职日期)-1)
from
员工信息
)
哈哈,不知我说的清楚没有
我用的是ORACEL
数据库