新增列值问题

Pact_Alice 2015-09-17 03:29:08
--希望多出来一列按照CVGUID,PromotionCode分组,
--同一组的如果desc01 为 False 则 desc0对应的为 NO,
-- 如果desc01 为 True 则 desc0 对应的为 Yes
-- 如果desc0 为空的还是空
;WITH cet AS (
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57' CVGUID, 'C0001' PromotionCode, NULL Desc0, NULL Desc01 UNION ALL
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57', 'C0001', '买数量送百分比数量', NULL UNION ALL
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57', 'C0001', '销售数量', 'False' UNION ALL
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57', 'C0001', '合同金额', 'False' UNION ALL
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54', 'P201506080005', NULL, NULL UNION ALL
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54', 'P201506080005', NULL, NULL UNION ALL
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54', 'P201506080005', NULL, NULL UNION ALL
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54', 'P201506080005', NULL, NULL UNION ALL
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54', 'P201506080005', '买金额送金额', NULL UNION ALL
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54', 'P201506080005', '买数量送数量', NULL UNION ALL
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54', 'P201506080005', '买数量送数量', NULL UNION ALL
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54', 'P201506080005', '销售数量', 'True' UNION ALL
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54', 'P201506080005', '销售金额', 'True' UNION ALL
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54', 'P201506080005', '发票金额', 'True'
)
SELECT * FROM cet
...全文
91 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Pact_Alice 2015-09-17
  • 打赏
  • 举报
回复
引用 6 楼 yangb0803 的回复:
同组内的Desc01 如果相同,可以这么写。


;WITH cte AS (
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57' CVGUID,	'C0001' PromotionCode,	NULL Desc0, NULL Desc01 UNION ALL 
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57',	'C0001',	'买数量送百分比数量',	NULL UNION ALL 
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57',	'C0001',	'销售数量',	'False'  	UNION ALL 
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57',	'C0001',	'合同金额',	'False'	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	NULL,	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	NULL,	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	NULL,	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	NULL,	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'买金额送金额',	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'买数量送数量',	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'买数量送数量',	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'销售数量',	'True'	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'销售金额',	'True'	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'发票金额',	'True'	
)
select T2.CVGUID, T2.PromotionCode, T2.Desc0, T2.Desc01,
isnull(case 
when T2.Desc0 is not null and T2.Desc01 is null then  
case  
when T1.Desc01='False' then 'NO' 
when T1.Desc01='true' then 'YES' 
end end, '') as desc02   
from cte as T2
left join
(
  select CVGUID,PromotionCode, min(Desc01) as Desc01 
    from cte group by CVGUID, PromotionCode
) as T1
on T1.CVGUID = T2.CVGUID and T1.PromotionCode = T2.PromotionCode

Tanks VM
Pact_Alice 2015-09-17
  • 打赏
  • 举报
回复
引用 5 楼 yangb0803 的回复:
[quote=引用 4 楼 Landa_Alice 的回复:] 看看一楼的截图应该比较清楚的
发出来就发现你清晰的图来了,哎, csdn 自己回复的帖子,错了自己都没法编辑。。。[/quote] 是滴啊,然后我自己又要补充说明,您帮我看看有什么办法能处理,达到我想要的结果啊拜托
道玄希言 2015-09-17
  • 打赏
  • 举报
回复
同组内的Desc01 如果相同,可以这么写。


;WITH cte AS (
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57' CVGUID,	'C0001' PromotionCode,	NULL Desc0, NULL Desc01 UNION ALL 
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57',	'C0001',	'买数量送百分比数量',	NULL UNION ALL 
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57',	'C0001',	'销售数量',	'False'  	UNION ALL 
select 'BD2A1916-C2E6-46A5-9538-17F2BCA62B57',	'C0001',	'合同金额',	'False'	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	NULL,	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	NULL,	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	NULL,	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	NULL,	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'买金额送金额',	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'买数量送数量',	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'买数量送数量',	NULL	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'销售数量',	'True'	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'销售金额',	'True'	UNION ALL 
select '1933DBD7-4763-4CF6-B2F1-B39990DADA54',	'P201506080005',	'发票金额',	'True'	
)
select T2.CVGUID, T2.PromotionCode, T2.Desc0, T2.Desc01,
isnull(case 
when T2.Desc0 is not null and T2.Desc01 is null then  
case  
when T1.Desc01='False' then 'NO' 
when T1.Desc01='true' then 'YES' 
end end, '') as desc02   
from cte as T2
left join
(
  select CVGUID,PromotionCode, min(Desc01) as Desc01 
    from cte group by CVGUID, PromotionCode
) as T1
on T1.CVGUID = T2.CVGUID and T1.PromotionCode = T2.PromotionCode

道玄希言 2015-09-17
  • 打赏
  • 举报
回复
引用 4 楼 Landa_Alice 的回复:
看看一楼的截图应该比较清楚的
发出来就发现你清晰的图来了,哎, csdn 自己回复的帖子,错了自己都没法编辑。。。
Pact_Alice 2015-09-17
  • 打赏
  • 举报
回复
引用 2 楼 yangb0803 的回复:

SELECT *,
case 
when Desc0 is not null then  
case 
when Desc01='False' then 'NO' 
when Desc01='true' then 'YES' 
end end as desc02 FROM cet
看看一楼的截图应该比较清楚的
Pact_Alice 2015-09-17
  • 打赏
  • 举报
回复
引用 2 楼 yangb0803 的回复:

SELECT *,
case 
when Desc0 is not null then  
case 
when Desc01='False' then 'NO' 
when Desc01='true' then 'YES' 
end end as desc02 FROM cet
谢谢回答,可惜不是我要的结果啊
Pact_Alice 2015-09-17
  • 打赏
  • 举报
回复
道玄希言 2015-09-17
  • 打赏
  • 举报
回复

SELECT *,
case 
when Desc0 is not null then  
case 
when Desc01='False' then 'NO' 
when Desc01='true' then 'YES' 
end end as desc02 FROM cet

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧