问题来自优快云,http://community.youkuaiyun.com/Expert/topic/5335/5335373.xml?temp=.9038813:
表A
F_type F_Price1 F_price2
普通 10 5
金卡 9 4
银卡 8 3
表B
F_bookname F_bookNum1 F_bookNum2
AAA 1 0
BBB 2 3
CCC 3 5
表C
F_Code F_Spec
001 螺丝
002 钉子
要求按表A中F_price1和F_price2中的值动态生成列
并把同样价格的放在与价格对应的列中,结果如下:
(备注:几个表中没有字段关联,但是表C两条记录是不变的,表C中的记录001对应表B中的F_Booknum1,F_bookNum1与表AF_Price1,记录2也是一样的)
其实表A和表C的主要就是为了动态生成列,表B是销售表,统计下哪种价格卖了多少!请大家帮忙!
螺丝|10元 螺丝|9元 螺丝|8元 钉子|5元 钉子|4元 钉子|3元
1 2 3 0 3 5
下面是建表语句:
create table A(F_type varchar(10), F_Price1 int, F_price2 int)
insert A select '普通', 10, 5
union all select '金卡', 9, 4
union all select '银卡', 8, 3
create table B(F_bookname varchar(10), F_bookNum1 int, F_bookNum2 int)
insert B select 'AAA', 1, 0
union all select 'BBB', 2, 3
union all select 'CCC', 3, 5
create table C(F_code varchar(10), F_spec varchar(10))
insert C select '001','螺丝'
union all select '002','钉子'
看得比较晕,但仔细看一下要求,问题还是可以解决的,如:
create table A(F_type varchar(10), F_Price1 int, F_price2 int)
insert A select '普通', 10, 5
union all select '金卡', 9, 4
union all select '银卡', 8, 3
create table B(F_bookname varchar(10), F_bookNum1 int, F_bookNum2 int)
insert B select 'AAA', 1, 0
union all select 'BBB', 2, 3
union all select 'CCC', 3, 5
create table C(F_code varchar(10), F_spec varchar(10))
insert C select '001','螺丝'
union all select '002','钉子'
DECLARE @Sql nvarchar(4000)
SELECT IDENTITY(int,1,1) AS [ID],F_spec,CASE F_spec WHEN '螺丝' THEN F_Price1 ELSE F_Price2 END AS F_Price INTO #T1 FROM C LEFT OUTER JOIN A ON 1=1
SELECT IDENTITY(int,1,1) AS [ID],F_spec,CASE F_spec WHEN '螺丝' THEN F_Booknum1 ELSE F_Booknum2 END AS F_Booknum INTO #T2 FROM C LEFT OUTER JOIN B ON 1=1
SET @Sql='SELECT '
SELECT @Sql=@Sql+CAST(B.F_Booknum AS nvarchar(20))+ ' AS '''+A.F_spec+'|'+CAST(A.F_Price AS nvarchar(20))+'元'','
FROM #T1 AS A INNER JOIN #T2 AS B ON A.[ID]=B.[ID]
SET @Sql=LEFT(@Sql,LEN(@Sql)-1)
EXECUTE( @Sql)
DROP TABLE A,B,C,#T1,#T2
/*
螺丝|10元 螺丝|9元 螺丝|8元 钉子|5元 钉子|4元 钉子|3元
1 2 3 0 3 5
*/
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7764484/viewspace-897059/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7764484/viewspace-897059/