日期:2014-05-17  浏览次数:20629 次

像这种行转列+分类汇总的SQL语句怎么写?
--表共5层结构,逻辑关系是:客户-->项目-->业务单据-->具体单据数据<-->产品规格表以及合同表  本次只涉及其中4层(除客户),
--其中业务单据包含了进出关系(进是负,出是正),产品比较简单,就把品名和规格放在一张表里
--本次查询为了获得某客户下面几大产品的进出数据
/****** 对象: 项目表    脚本日期: 01/28/2013 08:09:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[SteelProject](
[ID] [int] IDENTITY(1,1) NOT NULL,
[CustomerID] [int] NULL,--客户ID
[ProjectName] [nvarchar](200) COLLATE Chinese_PRC_CI_AS NULL,--项目名称(仅
[Contractor] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[ContactNumber] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[SecondParty] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[FirstParty] [nvarchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[IsWancheng] [int] NULL,--项目状态,0为未完成,1已完成
 CONSTRAINT [PK_SteelProject] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF


/****** 对象: 业务单据表(出库、入库单)   脚本日期: 01/28/2013 08:10:19 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[SteelBusinessOrder](
[ID] [int] IDENTITY(1,1) NOT NULL,
[ProjectID] [int] NULL,--项目ID
[OrderNumber] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[OrderDirection] [int] NULL,--单据类型,0为出库,1为入库
[OrderDate] [smalldatetime] NULL,
[OrderClerk] [int] NULL,
[CustomReceiver] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[CustomOrderNumber] [varchar](100) COLLATE Chinese_PRC_CI_AS NULL,
[Carrier] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[IsDel] [int] NULL CONSTRAINT [DF_SteelBusinessOrder_IsDel]  DEFAULT ((0)),--0为正常单据,1为作废单据
[Pyear] [char](4) COLLATE Chinese_PRC_CI_AS NULL CONSTRAINT [DF_BusinessOrder_Pyear]  DEFAULT (CONVERT([char](4),getdate(),(112))),
[InsertTime] [smalldatetime] NULL CONSTRAINT [DF_SteelBusinessOrder_InsertTime]  DEFAULT (CONVERT([char](20),getdate(),(120))),
 CONSTRAINT [PK_BusinessOrder] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
SET ANSI_PADDING OFF

/****** 对象:  业务单据具体数据表    脚本日期: 01/28/2013 08:11:59 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[SteelBusinessList](
[ID] [int] IDENTITY(1,1) NOT NULL,
[OrderID] [int] NULL,--业务单据
[StandardID] [int] NULL,--产品及规格表ID
[ListAmount] [int] NULL,
[SubTotal] [decimal](18, 2) NULL,--总数
 CONSTRAINT [PK_SteelRecord] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]