有一表aa,其结构与数据如下:
code welder line_no spec
1 NC3 P101 δ:9.5
2 NC3/NA3 P101 δ:9.5
3 NC3/NA3 P101 δ:9.5
4 NC3 P101 δ:9.5
5 NA3 P101 δ:9.5
现在需要按welder,line_no,spec分组显示各自所包函了哪些code,其效果如下所示: P101 NA3 δ:9.5 5
P101 NC3 δ:9.5 1,4
P101 NC3/NA3 δ:9.5 2,3
试问:这个的交叉表是否可写,又如何写?在线跪求各大虾帮忙.
解决方案 »
- 这是什么错误
- 大家有沒有做過ServerSocket的文件保存功能啊,客戶端同時發文件過來時,保存多個文件由於共用一個全局文件流而發生錯誤!大家是怎麼處理的?
- 工具条问题
- 你们说这种说法对吗?发到串口上的数据不接受难道还有影响?
- 如何解决BDE中的BLOB字段错误
- 关于报表的一个小问题!
- 如何制作向导式窗口?
- 动态读取DFM文件的问题
- 高薪诚聘delphi工程师
- 《Delphi5开发人员指南》......
- 用ExcelApp.cells[3,3].value,取单元格的值时不是我想要的时间,这个怎么办
- IdTCPClient发送记录类型数据到IDTCPServer,Server端如何还原该记录?
CREATE TABLE t
(
code int,
welder nvarchar(50),
line_no nvarchar(50),
spec nvarchar(50)
)
insert into t
select 1,'NC3','P101','δ:9.5'
union all select 2,'NC3/NA3','P101','δ:9.5'
UNION ALL select 3,'NC3/NA3','P101','δ:9.5'
union all select 4,'NC3','P101','δ:9.5'
union all select 5,'NA3','P101','δ:9.5'
--函數
create function dbo.f_a(@a varchar(10))
returns varchar(1000)
as
begin
declare @s varchar(1000)
set @s=''
select @s=@s+CAST(code as nvarchar(10))+',' from t where welder=@a
return (left(@s,len(@s)-1))
endselect welder,line_no,spec,code=dbo.f_a(welder) from t GROUP BY welder,line_no,spec
--测试数据
NA3 P101 δ:9.5 5
NC3 P101 δ:9.5 1,4
NC3/NA3 P101 δ:9.5 2,3--删除测试
drop function dbo.f_a
drop table t
CREATE TABLE Test
(
code int,
welder varchar(30),
line_no varchar(30),
spec varchar(30)
)INSERT INTO Test
SELECT 1,'NC3','P101','δ:9.5' UNION ALL
SELECT 2,'NC3/NA3','P101','δ:9.5' UNION ALL
SELECT 3,'NC3/NA3','P101','δ:9.5' UNION ALL
SELECT 4,'NC3','P101','δ:9.5' UNION ALL
SELECT 5,'NA3','P101','δ:9.5' GO--SQLSERVER中建立合并函数
CREATE FUNCTION SplitColumn( @welder varchar(30), @line_no varchar(30),@spec varchar(30) )
RETURNS VARCHAR(2000)
AS
BEGIN
DECLARE @re VARCHAR(2000)
SET @re = ''
SELECT @re = @re+','+CAST( CODE AS VARCHAR)
FROM Test WHERE welder = @welder AND line_no = @line_no AND spec = @spec
RETURN ( STUFF(@re,1,1,'') )
END
GO--这是执行的SQL语句,可以直接用ADOQuery,或者其他的DataSet执行调用
SELECT line_no, welder, spec, dbo.SplitColumn(welder,line_no,spec) AS spec
FROM Test GROUP BY welder,line_no,specDROP FUNCTION SplitColumn
DROP TABLE Test--结果数据
line_no welder spec spec
P101 NA3 δ:9.5 5
P101 NC3 δ:9.5 1,4
P101 NC3/NA3 δ:9.5 2,3--DELPHI里的方法我就不再写了!good luck!