2010-07-04 44 views
0

我在数据库中有大约1000行,我想在列组明智地划分。我的意思是在下面的格式如何在tsql中的多列中划分数据

SlNo. Name Price  SlNo. Name Price  SlNo. Name Price 

我怎么可以编写查询来以上格式的数据显示在RDLC报告VS 2008我不能在这种格式来显示数据。任何帮助,将不胜感激......

销售表结构

CREATE TABLE [dbo].[Sales](
[SalesId] [int] IDENTITY(1,1) NOT NULL, 
[MemoNo] [int] NULL, 
[CustomerID] [int] NULL, 
[SalesmanID] [int] NULL, 
[DisRate] [int] NULL, 
[CoolingCh] [int] NULL, 
[GrandTotal] [int] NULL, 
[SubTotal] [int] NULL, 
[BillDate] [varchar](10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
[AddedOn] [datetime] NULL, 
CONSTRAINT [PK_Sales] PRIMARY KEY CLUSTERED 
(
[SalesId] ASC 
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY] 
) ON [PRIMARY] 

感谢.........

+0

我不认为这是可能的SQL查询,除非你创建一个相当复杂的存储过程。这些东西在代码中更好。 – 2010-07-04 06:54:45

+2

这应该是一个简单的'SELECT(fields)FROM dbo.Sales',然后在报表设计器中让您的报表显示重复三次的三列...... – 2010-07-04 07:26:58

+0

@marc_s:这应该是一个答案 – gbn 2010-07-04 08:17:23

回答

2

这应该是一个简单

SELECT 
    SalesId, [Name], GrandTotal as 'Price' 
FROM 
    dbo.Sales 
WHERE 
    (some condition) 

检索您需要的所有数据,然后在SQL Server报表设计让您的报告显示三列跨重复三次......

使用SQL Server和T-SQL以检索数据,并使用SQL Server Reporting Services以格式输出以满足您的需求。

1

我认为有些事情可以沿着线来完成.. 。

SELECT 
    SELECT * 
     FROM (SELECT SalesId, Name, Price 
        FROM Sales S2 
        WHERE S2.SalesId = S1.SalesId ) as Tab1, 
    SELECT * 
     FROM (SELECT SalesId, Name, Price 
        FROM Sales S2 
        WHERE S2.SalesId = S1.SalesId + 1) as Tab2, 
    SELECT * 
     FROM (SELECT SalesId, Name, Price 
        FROM Sales S2 
        WHERE S2.SalesId = S1.SalesId + 2) as Tab3 
    FROM Sales 
    WHERE ...every third row...; 

我不能完整填写详细信息,因为我在TSQL的专家,也表不包含SlNo,名称或价格,你大概甲肝e从某个地方得到。正如罗纳德·威尔登堡(Ronald Wildenberg)所说的那样,这是否改善了代码的质量。