1、如何在VB中调用EXCEL实现页面设置、打印预览、打印。
2、数据库有一个表如下:
编号 产品 数量 所属
1 A 8 财务部
2 B 5 财务部
3 A 2 市场部
4 C 4 客户部
…………………………等等,其中“产品”和“所属”的内容不固定
要求结果:
产品 财务部 市场部 客户部 合计
A 8 2 0 10
B 5 0 0 5
C 0 0 4 4
2、数据库有一个表如下:
编号 产品 数量 所属
1 A 8 财务部
2 B 5 财务部
3 A 2 市场部
4 C 4 客户部
…………………………等等,其中“产品”和“所属”的内容不固定
要求结果:
产品 财务部 市场部 客户部 合计
A 8 2 0 10
B 5 0 0 5
C 0 0 4 4
create table ta(id numeric(5),procduct varchar(2),num numeric(10),dept varchar(20))insert into ta values(1,'A',8,'財務部')
insert into ta values(2,'B',5,'財務部')
insert into ta values(3,'A',2,'市場部')
insert into ta values(4,'C',4,'客戶部')select procduct as 产品,
sum(case when dept= '財務部' then num else 0 end) as 財務部,
sum(case when dept= '市場部' then num else 0 end) as 市場部,
sum(case when dept= '客戶部' then num else 0 end) as 客戶部,
sum(num) as 合计
from ta group by procduct測試結果:
产品 财务部 市场部 客户部 合计
=======================================
A 8 2 0 10
B 5 0 0 5
C 0 0 4 4
感谢你的回答,不过这个问题是这样的啊,部门数量不确定,可能会有新的部门产生,而现有的部门又可能回不存在了另:我也很喜欢米兰,呵呵
dim sql as string
dim rs as new adodb.recordset
dim i as integer
dim strfield as string
sql="select distinct dept from ta" '選出不重復的部門
rs.cursorlocation=aduseclient
rs.open sql,connif rs.recordCount >0 then
rs.movefirst
for i =0 to rs.recordcount-1
strfield=strfield & ",sum(case when dept= '" & rs.fields(0) & "' then num else 0 end) as " & rs.fields(0)
rs.movenext
next
endifsql="select procduct as 产品 " & strfield & ",sum(num) as 合计 from ta group by procduct"
CREATE TABLE TEST (編號 INT IDENTITY,
產品 CHAR(1),
數量 INT,
所屬 NVARCHAR(20))
INSERT INTO TEST (產品,數量,所屬)
SELECT 'A',8,N'财务部'
UNION
SELECT 'B',5,N'财务部'
UNION
SELECT 'A',2,N'市场部'
UNION
SELECT 'C',4,N'客户部'GOIF NOT OBJECT_ID('MASTER..uspTest') IS NULL DROP PROC uspTestGOCREATE PROC uspTest
AS
DECLARE @DEPT NVARCHAR(20),
@FIELDS NVARCHAR(200),
@SQL NVARCHAR(1000)
SET @FIELDS = ''
DECLARE TEST_CUR CURSOR FORWARD_ONLY FOR
SELECT DISTINCT 所屬 FROM TEST
OPEN TEST_CUR
FETCH NEXT FROM TEST_CUR INTO @DEPT
WHILE @@FETCH_STATUS = 0
BEGIN
SET @FIELDS = @FIELDS + ',SUM(CASE WHEN 所屬 = N''' + @DEPT + ''' THEN 數量 ELSE 0 END) AS ' + @DEPT
FETCH NEXT FROM TEST_CUR INTO @DEPT
END
CLOSE TEST_CUR
DEALLOCATE TEST_CUR
IF @FIELDS = '' RETURN
SET @SQL = 'SELECT 產品' + @FIELDS + ',SUM(數量) AS 合計 FROM TEST GROUP BY 產品'
EXEC (@SQL)GOEXEC uspTest
產品 市场部 客户部 财务部 合計
---- ----------- ----------- ----------- -----------
A 2 0 8 10
B 0 0 5 5
C 0 4 0 4(3 row(s) affected)
TRANSFORM Sum(表1.数量) AS 数量之Sum
SELECT 表1.产品, Sum(表1.数量) AS [总计 数量]
FROM 表1
GROUP BY 表1.产品
PIVOT 表1.所属;