mysql 交叉表 存储过程_交叉表—用存储过程实现的普通交叉表(一)

本文介绍了如何使用SQL存储过程创建交叉表,特别是针对销售和兑换数据的汇总。通过设置不同的条件(如业务经理、客户性质、产品分类等),生成按客户和品种分类的销售数据。存储过程首先创建临时表,然后根据条件插入数据并进行汇总,最后形成交叉表结构,同时计算了日均销量、面粉和面条的合计数量。
摘要由CSDN通过智能技术生成

交叉表—用存储过程实现的普通交叉表(一)

开发工具:C#2008/2010

数据库:Sql Server 2000/2005/2008

界面:WinForm

关于交叉表,各位网友用各种方法实现的不少了,本文主要从用存储过程实现交叉表功能进行探讨,这种方法给具体用户也做了不少。界面如下:

867df5ec5dc51a5811832a8554d5620c.png

一、基本数据结构

(一)销售单主表结构

7f0fea935aaf66199a61bc3dd077a9ac.png

(二)销售单明细明

8c0fd2eff0de2ed5adfbad9d76121603.png

(三)由上述两表组成的视图

a2b64a8cab9aa13e7d3487502a1de348.png

二、存储过程

--业务经理销售或兑换分品种按客户汇总表

CREATE PROCEDURE YWYXSDHFPZKHHZ

(

@TJTS int,

@StartDate VARCHAR(20),

@EndDate VARCHAR(20),

@YWYID VARCHAR(50),

@KHXZ VARCHAR(50),

@TJFW VARCHAR(50),

@ProCate VARCHAR(50),

@ClientCate VARCHAR(50),

@ChanDi VARCHAR(50),

@returnstring nvarchar(200) out

)

AS

set @StartDate =@StartDate+ ' 00:00:00'--查询的开始日期

set @EndDate =@EndDate+ ' 23:59:59'--查询的结束日期

set @returnstring='日均销量:000'

DECLARE @FIELD VARC

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设我们有两个A和B,每个包含两个列id和name。我们需要将这两个交叉并集写入文本文件中。 1. 首先,我们需要使用Java中的JDBC连接到数据库,读取这两个中的数据。我们可以使用Java中的JDBC API和适当的数据库连接器来完成这个任务。 2. 接下来,我们需要将这些数据组合成一个集合,这个集合包含A和B的所有行。我们可以使用Java中的List或Set来存储这些行。 3. 在将这些数据写入文件之前,我们需要对它们进行排序。我们可以使用Java中的Collections.sort()方法对集合进行排序。 4. 最后,我们可以使用Java中的FileWriter和BufferedWriter将数据写入文本文件。以下是完整的Java代码示例: ``` import java.io.BufferedWriter; import java.io.FileWriter; import java.sql.*; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class CrossJoinExample { public static void main(String[] args) { List<String[]> rows = new ArrayList<>(); Connection conn = null; Statement stmt = null; try { //Step 1: Connect to the database conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydatabase", "username", "password"); //Step 2: Read data from table A stmt = conn.createStatement(); String sql = "SELECT id, name FROM A"; ResultSet rs = stmt.executeQuery(sql); while (rs.next()) { String[] row = new String[2]; row[0] = rs.getString("id"); row[1] = rs.getString("name"); rows.add(row); } //Step 3: Read data from table B sql = "SELECT id, name FROM B"; rs = stmt.executeQuery(sql); while (rs.next()) { String[] row = new String[2]; row[0] = rs.getString("id"); row[1] = rs.getString("name"); rows.add(row); } //Step 4: Close resources rs.close(); stmt.close(); conn.close(); //Step 5: Sort rows Collections.sort(rows, (a, b) -> a[0].compareTo(b[0])); //Step 6: Write rows to file FileWriter fw = new FileWriter("output.txt"); BufferedWriter bw = new BufferedWriter(fw); for (String[] row : rows) { bw.write(row[0] + "\t" + row[1]); bw.newLine(); } bw.close(); fw.close(); System.out.println("Data written to file successfully."); } catch (SQLException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (stmt != null) stmt.close(); } catch (SQLException e) { e.printStackTrace(); } try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } } ``` 请注意,这只是一个示例代码。您需要根据自己的数据库和结构进行相应的更改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值