MsSql “with”用法

CREATE TABLE #PRODUCT(id INT,NAME1 NVARCHAR(10))
CREATE TABLE #DATA_ATTRIBUTE_ABOUT_PRODUCT(id INT,type1 INT)
CREATE TABLE #DATA_ATTRIBUTE(id INT,NAME1 NVARCHAR(10),name2 NVARCHAR(10))
INSERT INTO #PRODUCT VALUES (1,'AAA')
INSERT INTO #PRODUCT VALUES (2,'BBB')
INSERT INTO #DATA_ATTRIBUTE_ABOUT_PRODUCT VALUES (1,1)
INSERT INTO #DATA_ATTRIBUTE_ABOUT_PRODUCT VALUES (1,2)
INSERT INTO #DATA_ATTRIBUTE_ABOUT_PRODUCT VALUES (1,3)
INSERT INTO #DATA_ATTRIBUTE_ABOUT_PRODUCT VALUES (2,2)
INSERT INTO #DATA_ATTRIBUTE_ABOUT_PRODUCT VALUES (2,3)

INSERT INTO #DATA_ATTRIBUTE VALUES (1,'COUNT','500')
INSERT INTO #DATA_ATTRIBUTE VALUES (2,'COLOR','RED')
INSERT INTO #DATA_ATTRIBUTE VALUES (3,'SIZE','100*200');

--SELECT a.ID,a.Name,MAX(CASE WHEN a.Name1='COUNT' then a.Name2 ELSE '' end) AS [COUNT]
--,MAX(CASE WHEN a.Name1='COLOR' then a.Name2 ELSE '' end) AS [COLOR]
--,MAX(CASE WHEN a.Name1='SIZE' then a.Name2 ELSE '' end) AS [SIZE]
--FROM(
--SELECT a.id,a.Name1 AS Name,c.Name1,c.name2
--FROM #PRODUCT a
--LEFT JOIN #DATA_ATTRIBUTE_ABOUT_PRODUCT b ON a.id = b.id
--LEFT JOIN #DATA_ATTRIBUTE c ON b.type1=c.id
--) a
--GROUP BY a.id,a.NAME;

WITH TEMPTable AS 
(
	SELECT a.id,a.Name1 AS Name,c.Name1,c.name2
	FROM #PRODUCT a
	LEFT JOIN #DATA_ATTRIBUTE_ABOUT_PRODUCT b ON a.id = b.id
	LEFT JOIN #DATA_ATTRIBUTE c ON b.type1=c.id
)
SELECT a.ID,a.Name,MAX(CASE WHEN a.Name1='COUNT' then a.Name2 ELSE '' end) AS [COUNT]
,MAX(CASE WHEN a.Name1='COLOR' then a.Name2 ELSE '' end) AS [COLOR]
,MAX(CASE WHEN a.Name1='SIZE' then a.Name2 ELSE '' end) AS [SIZE]
FROM TEMPTable a
GROUP BY a.id,a.NAME


DROP TABLE #PRODUCT
DROP TABLE #DATA_ATTRIBUTE_ABOUT_PRODUCT
DROP TABLE #DATA_ATTRIBUTE

转载于:https://www.cnblogs.com/kinpauln/archive/2011/05/24/2055755.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值