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

求一sql语句,请高手们指点,在线等 大家帮帮忙....

CREATE TABLE [dbo].[A_B](
[ID] [int] IDENTITY(1,1) NOT NULL,
[A] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[B] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
[C] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL
)

INSERT INTO A_B(A,B,C) VALUES('科目一','A','类型一')
INSERT INTO A_B(A,B,C) VALUES('科目二','A','类型一')
INSERT INTO A_B(A,B,C) VALUES('科目三','A','类型一')

INSERT INTO A_B(A,B,C) VALUES('科目一','B','类型二')
INSERT INTO A_B(A,B,C) VALUES('科目二','B','类型二')
INSERT INTO A_B(A,B,C) VALUES('科目三','B','类型二')

INSERT INTO A_B(A,B,C) VALUES('科目一','C','类型三')
INSERT INTO A_B(A,B,C) VALUES('科目二','C','类型三')
INSERT INTO A_B(A,B,C) VALUES('科目三','C','类型三')

INSERT INTO A_B(A,B,C) VALUES('公共科目一','ALL','')
INSERT INTO A_B(A,B,C) VALUES('公共科目二','ALL','')


--查询后的数据格式如下:
-----------------------
  A        B     C 
----------------------
科目一     A   类型一
科目二     A   类型一
科目三     A   类型一
公共科目一 A   类型一
公共科目二 A   类型一
科目一     B   类型二
科目二     B   类型二
科目三     B   类型二
公共科目一 B   类型二
公共科目二 B   类型二
科目一     C   类型三
科目二     C   类型三
科目三     C   类型三
公共科目一 C   类型三
公共科目二 C   类型三
SQL 行业数据 行转列

------解决方案--------------------
TRY


 SELECT * FROM(
 SELECT * FROM [dbo].[A_B]
 WHERE [B]<>'ALL'
 UNION ALL
 
 SELECT A.ID,A.A,B1.B,B1.C  FROM
 (SELECT * FROM [dbo].[A_B]   WHERE [B]='ALL')   A
      CROSS JOIN 
 (SELECT  DISTINCT B,C FROM [dbo].[A_B]   WHERE [B]<>'ALL')   B1
 ) TX
 ORDER BY B ,A DESC
  
------解决方案--------------------
declare @a table ([ID] [int] IDENTITY(1,1) NOT NULL,
    [A] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
    [B] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL,
    [C] [nchar](10) COLLATE Chinese_PRC_CI_AS NULL)
 
INSERT INTO @a(A,B,C) VALUES('科目一','A','类型一')
INSERT INTO @a(A,B,C) VALUES('科目二','A','类型一')
INSERT INTO @a(A,B,C) VALUES('科目三','A','类型一') 
INSERT INTO @a(A,B,C) VALUES('科目一','B','类型二')
INSERT INTO @a(A,B,C) VALUES('科目二','B','类型二')
INSERT INTO @a(A,B,C) VALUES('科目三','B','类型二') 
INSERT&