这样的数据列表在存储过程中应该怎么样选择得到?

Kamen_Wang 2003-08-22 11:33:21
假设有两张表:T_TABLE1 T_TABLE2
T_TABLE1;F_FIELD1
A
B
C
D
T_TABLE2;F_FIELD1
X
Y
Z
假设查询出来的结果的列表格式为:
A B C D
X
Y
Z
其中,A,B,C,D是T_TABLE1中的数据;X,Y,Z是T_TABLE2中的数据,上面的列表中的数据又是从其他表中合计的,哪位能否讲一下这样的查询在存储过程中应该怎么样实习?


...全文
42 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kamen_Wang 2003-08-23
  • 打赏
  • 举报
回复
大力兄的解决方案和我现在正在做差不多,不过因为数据不是固定的,害我用了两个游标来循环,在存储过程中真的很麻烦,可是好像我们现在没有用其他的报表软件,所以只有这样写了,虽然我解决了问题,不过还是把份散给大家,多谢多谢。
pengdali 2003-08-22
  • 打赏
  • 举报
回复
举例:

create table 你的表(姓名 varchar(100),学历 varchar(100),部门 int)
insert 你的表 values('n1','aa',11)
insert 你的表 values('n2','bb',1)
insert 你的表 values('n3','aa',45)
insert 你的表 values('n4','cc',81)
insert 你的表 values('n5','a',11)
insert 你的表 values('n6','aay',561)
insert 你的表 values('n7','a',14)

declare @sql varchar(8000)
set @sql = 'select 部门'
select @sql = @sql + ',sum(case 学历 when '''+学历+''' then 1 else 0 end) ['+学历+'的人数]'
from (select distinct 学历 from 你的表) a

select @sql =@sql+' from 你的表 group by 部门'

exec(@sql)

drop table 你的表
Kamen_Wang 2003-08-22
  • 打赏
  • 举报
回复
我描述的太简单了,如果要说出来,是从8张表中选数据的,好麻烦
CrazyFor 2003-08-22
  • 打赏
  • 举报
回复
这从象报表一样的东西可以拿到报表软件中处理,在存储过程做要烦死的.
txlicenhe 2003-08-22
  • 打赏
  • 举报
回复
eg2:
Select ZH,
sum(case when JYDM = '9999' then JYJE else 0 end) as 9999交易总金额,
sum(case when JYDM = '9998' then JYJE else 0 end) as 9998交易总金额,
sum(case when JYDM = '9995' then JYJE else 0 end) as 9995交易总金额
from yourTable group by ZH


OR:

declare @sql varchar(8000)
set @sql = 'select ZH,'
select @sql = @sql + 'sum(case JYDM when '''+JYDM+'''
then JYJE else 0 end) '+JYDM+'交易总金额,'
from (select distinct JYDM from 你的表) as a

select @sql = left(@sql,len(@sql)-1) + ' from 你的表'

exec(@sql)
txlicenhe 2003-08-22
  • 打赏
  • 举报
回复
两个表必须有关联才行啊。

eg1:
有表A,
id pid
1 1
1 2
1 3
2 1
2 2
3 1
如何化成表B:
id pid
1 1,2,3
2 1,2
3 1
或者是从表B变成A(不要用游标)
以前有相似的列子,现在找不到了,帮帮忙!


--1.创建一个合并的函数
create function fmerg(@id int)
returns varchar(8000)
as
begin
declare @str varchar(8000)
set @str=''
select @str=@str+','+cast(pid as varchar) from 表A where id=@id
set @str=right(@str,len(@str)-1)
return(@str)
End
go

--调用自定义函数得到结果
select distinct id,dbo.fmerg(id) from 表A

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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