请大家帮我写一写这条SQL查询语句

Boible 2006-06-15 03:26:47
表1

UID TITLE FIRSTNAME LASTNAME
0 MR A0 A00
1 MR A1 A11
2 MR A2 A22
3 MR A3 A33
4 MR A4 A44
5 MR A5 A55


表2

GID UID1 UID2 UID3 UID4
100 0 1 2
200 3 4
300 5


要求的查询结果

GID NAMES
100 A0 A00/A1 A11/A2 A33
200 A3 A33/A4 A44
300 A5 A55
...全文
241 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
$扫地僧$ 2006-06-15
  • 打赏
  • 举报
回复
create table t1(UID int,TITLE varchar(10),FIRSTNAME varchar(10),LASTNAME varchar(10))
insert into t1
select 0,'MR','A0','A00' union all
select 1,'MR','A1','A11' union all
select 2,'MR','A2','A22' union all
select 3,'MR','A3','A33' union all
select 4,'MR','A4','A44' union all
select 5,'MR','A5','A55'

create table t2(GID int,UID1 int, UID2 int, UID3 int, UID4 int)
insert into t2
select 100,0,1,2,null union all
select 200,3,4,null,null union all
select 300,5,null,null,null


select GID,
case when T.UID1 is not null then (select FIRSTNAME + ' ' + LASTNAME from t1 where UID=T.UID1) else '' end
+ case when (T.UID1 is not null) and (T.UID2 is not null) then (select '/' + FIRSTNAME + ' ' + LASTNAME from t1 where UID=T.UID2)
when (T.UID2 is not null) then (select FIRSTNAME + ' ' + LASTNAME from t1 where UID=T.UID2)
else '' end
+ case when (T.UID2 is not null) and (T.UID3 is not null) then (select '/' + FIRSTNAME + ' ' + LASTNAME from t1 where UID=T.UID3)
when (T.UID3 is not null) then (select FIRSTNAME + ' ' + LASTNAME from t1 where UID=T.UID3)
else '' end
+ case when (T.UID3 is not null) and (T.UID4 is not null) then (select '/' + FIRSTNAME + ' ' + LASTNAME from t1 where UID=T.UID4)
when (T.UID4 is not null) then (select FIRSTNAME + ' ' + LASTNAME from t1 where UID=T.UID4)
else '' end
from t2 T
fcuandy 2006-06-15
  • 打赏
  • 举报
回复
上面的写法,如果uid4有值就有点问题了,应该是

SELECT GID,LEFT(Names,LEN(Names)-1) FROM(
SELECT GID,Names=
ISNULL(NULLIF((SELECT FirstName + ' ' + LastName +'/' FROM t1 WHERE uid1=uid),' /'),'')
+ISNULL(NULLIF((SELECT FirstName + ' ' + LastName +'/' FROM t1 WHERE uid2=uid),' /'),'')
+ISNULL(NULLIF((SELECT FirstName + ' ' + LastName +'/' FROM t1 WHERE uid3=uid),' /'),'')
+ISNULL(NULLIF((SELECT FirstName + ' ' + LastName +'/' FROM t1 WHERE uid4=uid),' /'),'') FROM t2) BASE
fcuandy 2006-06-15
  • 打赏
  • 举报
回复
我上面随手写的,有点问题,改下就OK

SELECT GID,LEFT(Names,LEN(Names)-1) FROM(
SELECT GID,Names=
ISNULL(NULLIF((SELECT FirstName + ' ' + LastName +'/' FROM t1 WHERE uid1=uid),' /'),'')
+ISNULL(NULLIF((SELECT FirstName + ' ' + LastName +'/' FROM t1 WHERE uid2=uid),' /'),'')
+ISNULL(NULLIF((SELECT FirstName + ' ' + LastName +'/' FROM t1 WHERE uid3=uid),' /'),'')
+ISNULL(NULLIF((SELECT FirstName + ' ' + LastName FROM t1 WHERE uid4=uid),' '),'') FROM t2) BASE
wgsasd311 2006-06-15
  • 打赏
  • 举报
回复
create table t1(UID int,TITLE varchar(10),FIRSTNAME varchar(10),LASTNAME varchar(10))
insert into t1
select 0,'MR','A0','A00' union all
select 1,'MR','A1','A11' union all
select 2,'MR','A2','A22' union all
select 3,'MR','A3','A33' union all
select 4,'MR','A4','A44' union all
select 5,'MR','A5','A55'
create table t2(GID int,UID1 int, UID2 int, UID3 int, UID4 int)
insert into t2
select 100,0,1,2,null union all
select 200,3,4,null,null union all
select 300,5,null,null,null

go


create function fn_str(@gid int)
returns varchar(4000)
as
begin
declare @s varchar(4000)
set @s=''
select @s=@s+'/'+t1.firstname+' '+t1.lastname from t1,t2 where t2.gid=@gid and
(t1.uid=t2.uid1 or t1.uid=t2.uid2 or t1.uid=t2.uid3 or t1.uid=t2.uid4 )
return stuff(@s,1,1,'')
end
go
select gid ,names=dbo.fn_str(gid) from t2
--
drop table t1,t2
drop function fn_str
fcuandy 2006-06-15
  • 打赏
  • 举报
回复
试试

SELECT GID,Names=
NULLIF((SELECT FirstName + ' ' + LastName +'/' FROM uTable WHERE uid1=uid),' /')
+NULLIF((SELECT FirstName + ' ' + LastName +'/' FROM uTable WHERE uid2=uid),' /')
+NULLIF((SELECT FirstName + ' ' + LastName +'/' FROM uTable WHERE uid3=uid)+'/',' /')
+NULLIF((SELECT FirstName + ' ' + LastName FROM uTable WHERE uid4=uid),' ')

因为觉得这个没什么要求的地方,就随便写了一下.
冷箫轻笛 2006-06-15
  • 打赏
  • 举报
回复
select t1.GID,isnull(t2.FIRSTNAME+' '+t2.LASTNAME,'')+
isnull('/'+t3.FIRSTNAME+' '+t3.LASTNAME,'')+
isnull('/'+t4.FIRSTNAME+' '+t4.LASTNAME,'')+
isnull('/'+t5.FIRSTNAME+' '+t5.LASTNAME,'')
from table2 t1 left join table1 t2 on t1.UID1 = t2.UID
left join table1 t3 on t1.UID1 = t3.UID
left join table1 t4 on t1.UID1 = t4.UID
left join table1 t5 on t1.UID1 = t5.UID
wgsasd311 2006-06-15
  • 打赏
  • 举报
回复
--try
create function dbo.fn_str(@gid int)
returns varchar(4000)
as
begin
declare @s varchar(4000)
set @s=''
select @s=@s+'/'+t2.firstname+' '+t2.lastname from t1,t2 where t2.gid=@gid and
(t1.uid=t2.uid1 or t1.uid=t2.uid2 or t1.uid=t2.uid3 or t1.uid=t2.uid4 )
return @s
end
go
select gid ,names=dbo.fn_str(gid) from tb
内容概要:本文围绕“单相逆变器闭环逆变电路PWM模型仿真研究”展开,基于Simulink平台构建单相逆变器的闭环控制系统仿真模型,重点研究PWM调制技术在逆变电路中的应用与实现。文中详细阐述了系统架构设计、电压电流双闭环控制策略的实现原理、控制器参数设计及仿真建模全过程,并通过仿真结果验证了控制方案在动态响应、稳态精度与系统稳定性方面的有效性。同时,文档还涵盖多种电力电子系统典型应用场景,如多类型短路故障仿真(中性点不接地、经小电阻接地、经消弧线圈接地等)、软开关技术、微电网能量管理、MPPT控制等,体现出较强的技术综合性和工程实践价值。; 适合人群:电气工程、自动化、电力电子与新能源等相关专业的高校本科生、研究生、科研人员,以及从事电力系统仿真、逆变器设计与新能源并网技术研发的工程技术人员。; 使用场景及目标:①掌握基于Simulink的单相逆变器闭环控制系统建模与PWM仿真方法;②深入理解双闭环控制、SPWM/SVPWM调制、系统稳定性分析等核心技术原理;③为课程设计、毕业设计、科研项目或实际工程开发提供可复用的仿真模型与技术支持; 阅读建议:建议结合文中仿真模型动手实践,重点掌握PI控制器参数整定、PWM信号生成机制与仿真结果分析方法,同时可延伸学习文档中涉及的软开关、故障仿真、微电网控制等关联技术,以拓展系统级设计能力。

34,876

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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