如何加入两个
我想出的情况这是不容易的一句话来解释,所以我会继续前进,这里给出完整的方案表根据1列的分组两个表。如何加入两个
我已经一个结果集像下面: -
它显示header_equipment_id(多个)一组jil_equipment_id,relationship_name,cell_group ..在例如3159398,4622903谎言在一个组中。
其他结果集如下,这就是我要更新3列即Is_Applicable_Price,prc_content_rid表,prc_type_name
如果您发现清楚了,你会发现同样的header_equipment_id列在这里。如果您将它与上面找到的结果进行分组,您会找到3个不同的组。但是这些出3组,一组是红色的,这是因为它们属于不同的cell_group/relationship_name是红色的。
**
- 黄色和绿色传递场景和红,蓝的失败。
**
我想更新的列Is_Applicable_Price,prc_content_rid,prc_type_name如果header_equipment_id(S)同cell_group和relationship_name下秋天的集团。
所以最终的结果集看起来像下面 -
请帮我任何输入如果可能的话。这是一种情况,我知道一个单一的查询将无法正常工作。但我将需要有多个临时表进行转换。但这是我遇到的最短的。
我正在使用Microsoft sql server 2012.
请帮忙。即使是一个小提示对我来说也是很有帮助的。提前致谢。
看来,2台有唯一的共同点是,cell_group可以有header_equipment_id的一行或多行。如果我们可以根据header_equipment_id生成一个唯一的值,那么我们可以在这个值上加入2个表。注意我已经使用了一个简单的部门,您可能希望检查此方法是否足够满足您的目的。
/*create table a
(jil_equimentid int,relationship_name varchar(20),header_equipment_id int,
smart_equipment_id int,cell_group int,new_price_flag int,is_applicable_price int,prc_content_rid int,prc_type_name varchar(20))
truncate table a
insert into a values
(1282977,'default',3159398,1282977,3,1,1,106347924,'New Price'),
(1282977,'default',4622903,1262578,3,1,1,106347924,'New Price'),
(1282977,'default',1659861,1282977,6,1,1,106347925,'New Price'),
(1282977,'default',4622904,1282977,6,1,1,106347925,'New Price')
go
drop table t
go
create table t
(jil_equimentid int,relationship_name varchar(20),header_equipment_id int,
smart_equipment_id int,cell_group int,new_price_flag int,is_applicable_price int,prc_content_rid int,prc_type_name varchar(20))
truncate table t
insert into t values
(1282977,'128297711111 default',4622903,1282977,1,1,null,null,null),
(1282977,'128297711211 default',3159398,1262578,2,1,null,null,null),
(1282977,'128297712111 default',4622904,1282977,4,1,null,null,null),
(1282977,'128297712211 default',1659861,1282977,5,1,null,null,null),
(1282977,'128297711101 default',3159398,1262578,1,1,null,null,null),
(1282977,'128297711101 default',4622903,1282977,1,1,null,null,null),
(1282977,'default' ,3159398,1262578,2,1,null,null,null),
(1282977,'default' ,4622903,1282977,2,1,null,null,null),
(1282977,'128297711101 default',1659861,1262577,3,1,null,null,null),
(1282977,'128297711101 default',4622904,1282977,3,1,null,null,null),
(1282977,'default' ,1659861,1262577,4,1,null,null,null),
(1282977,'default' ,4622904,1262577,4,1,null,null,null)
*/
DROP TABLE #TEMPA;
;WITH CTE AS
(SELECT a.cell_group,
sum(a.header_equipment_id/10000000.0000) uniqueval
from a
group by a.cell_group
)
SELECT DISTINCT CTE.UNIQUEVAL ,IS_APPLICABLE_PRICE ,PRC_CONTENT_RID ,PRC_TYPE_NAME
INTO #TEMPA
FROM CTE
JOIN A ON A.CELL_GROUP = CTE.CELL_GROUP
;WITH CTE AS
(
SELECT t.relationship_name,t.cell_group,
sum(t.header_equipment_id/10000000.0000) uniqueval
from t
group by t.relationship_name,t.cell_group having count(*) > 1
)
SELECT T.*,CTE.UNIQUEVAL,ta.*
FROM CTE
JOIN T ON T.RELATIONSHIP_NAME = CTE.RELATIONSHIP_NAME AND T.CELL_GROUP = CTE.CELL_GROUP
join #tempa ta on ta.uniqueval = cte.uniqueval
嘿,relationship_name和cell_group可以在表中不同,所以不能以它们为基础加入...! –
每个单元组最多有2行? –
不是,它不是固定的:( –
您是否有规则来决定Is_Applicable_Price,prc_content_rid,prc_type_name的更新值? –