现在有两个查询结果
项目名称 概算类型 概算名称 概算金额
中三改造 工程概算 121 80
中三改造 征地拆迁 565 50
项目名称 合同类型 合同编号 合同名称 合同金额
中三改造 建设合同 1212 城投 100
中三改造 建设合同 45 4545 20
如何形成这样的结果
项目名称 概算类型 概算名称 概算金额 合同类型 合同编号 合同名称 合同金额
中三改造 工程概算 121 80 建设合同 1212 城投 100
中三改造 征地拆迁 565 50 建设合同 45 4545 20
就是一个项目有多个概算,也有多个合同,想把概算和合同放在一起显示,如果用连接的话 就有4条记录了
------解决方案--------------------
- SQL code
--sql 2000select isnull(m.项目名称,n.项目名称) 项目名称, m.概算类型 , m.概算名称 , m.概算金额 , n.合同类型 , n.合同编号 , n.合同名称 , n.合同金额from(select t.* , px = (select count(1) from t1 where 项目名称 = t.项目名称 and 概算类型 < t.概算类型) + 1 from t1 t) mfull join(select t.* , px = (select count(1) from t2 where 项目名称 = t.项目名称 and 概算类型 < t.概算类型) + 1 from t2 t) non m.项目名称 = n.项目名称 and m.px = n.px
------解决方案--------------------
- SQL code
--> 测试数据:[tbl1]if object_id('[tbl1]') is not null drop table [tbl1]create table [tbl1]([项目名称] varchar(8),[概算类型] varchar(8),[概算名称] int,[概算金额] int)insert [tbl1]select '中三改造','工程概算',121,80 union allselect '中三改造','征地拆迁',565,50--> 测试数据:[tbl2]if object_id('[tbl2]') is not null drop table [tbl2]create table [tbl2]([项目名称] varchar(8),[合同类型] varchar(8),[合同编号] int,[合同名称] varchar(4),[合同金额] int)insert [tbl2]select '中三改造','建设合同',1212,'城投',100 union allselect '中三改造','建设合同',45,'4545',20select a.项目名称,a.概算类型,a.概算名称,a.概算金额,b.合同类型,b.合同编号,b.合同名称,b.合同金额 from(select ROW_NUMBER()over(order by getdate()) as id,* from [tbl1])ainner join(select ROW_NUMBER()over(order by getdate()) as id,* from [tbl2])bon a.项目名称=b.项目名称 and a.id=b.id/*项目名称 概算类型 概算名称 概算金额 合同类型 合同编号 合同名称 合同金额中三改造 工程概算 121 80 建设合同 1212 城投 100中三改造 征地拆迁 565 50 建设合同 45 4545 20*/
------解决方案--------------------