求SQL語句一條(合並資料)

ybkenan 2008-08-08 03:12:35
在一表A中,有三筆資料如下:
字段A 字段B 字段C 字段D
abc Y N N
abc N N N
abc N Y N
怎樣用一條SQL語句把以上資料變為一條記錄:
(即字段A資料相同,其它三個字段如果不同,則合並顯示為Y,全N的還是為N)
字段A 字段B 字段C 字段D
abc Y Y N

謝謝!
...全文
109 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yrwx001 2008-08-08
  • 打赏
  • 举报
回复
jf
ybkenan 2008-08-08
  • 打赏
  • 举报
回复
忘記用Max了,多謝!
yrwx001 2008-08-08
  • 打赏
  • 举报
回复
select distinct A, B= (CASE WHEN EXISTS(select 1 FROM tb E where E.A = F.A and E.B = 'Y') THEN 'Y' ELSE 'N' END)
, C = (CASE WHEN EXISTS(select 1 FROM tb E where E.A = F.A and E.C = 'Y') THEN 'Y' ELSE 'N' END)
, D = (CASE WHEN EXISTS(select 1 FROM tb E where E.A = F.A and E.D = 'Y') THEN 'Y' ELSE 'N' END)
FROM tb F
lgxyz 2008-08-08
  • 打赏
  • 举报
回复
DECLARE @TB TABLE (A VARCHAR(10),B VARCHAR(10),C VARCHAR(10),D VARCHAR(10))

INSERT INTO @TB SELECT 'abc','Y','N','N'
UNION ALL SELECT 'abc', 'N', 'N' , 'N'
UNION ALL SELECT 'abc', 'N', 'Y' , 'N'


SELECT A,B=MAX(B),C=MAX(C),D=MAX(D) FROM @TB GROUP BY A

/*
A B C D
---------- ---------- ---------- ----------
abc Y Y N

(所影响的行数为 1 行)

*/
-狙击手- 2008-08-08
  • 打赏
  • 举报
回复
------------------------------------
-- Author:Flystone
-- Version:V1.001
-- Date:2008-08-08 15:16:23
------------------------------------

-- Test Data: ta
If object_id('ta') is not null
Drop table ta
Go
Create table ta(字段A nvarchar(3),字段B nvarchar(1),字段C nvarchar(1),字段D nvarchar(1))
Go
Insert into ta
select 'abc','Y','N','N' union all
select 'abc','N','N','N' union all
select 'abc','N','Y','N'
Go
--Start
select 字段A,max( 字段B)字段B,max( 字段C) 字段c,max( 字段D ) 字段d
from ta
group by 字段A

--Result:
/*


字段A 字段B 字段c 字段d
---- ---- ---- ----
abc Y Y N

(所影响的行数为 1 行)


*/
--End
-狙击手- 2008-08-08
  • 打赏
  • 举报
回复
select 字段A,max( 字段B),max( 字段C),max( 字段D )
from ta
group by 字段A

27,579

社区成员

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

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