我想将表连接到另一个表。请检查下面的查询。我想加入OASC T3表。因此,如果我更新此表中的数据,还应该更新Rest。请帮忙
SELECT distinct concat([Segment_0], '-' , [Segment_1], '-' ,[Segment_2]) As 'AcctCode',
T1.[AcctName], T2.[Name], T3.[Code], T3.[Name],
T0.[DebLTotal] AS 'ANNUAL BUDGET', T0.[DebRLTotal] AS 'UTILISED BUDGET' ,
(T0.[DebLTotal]-T0.[DebRLTotal]) AS 'BALANCE BUDGET'
FROM OBGT T0
INNER JOIN OACT T1 ON T0.[AcctCode] = T1.[AcctCode]
INNER JOIN OBGS T2 ON T0.[Instance] = T2.[AbsId],
OASC T3
WHERE T2.[Name] = [%0]
正如您在此查询中所看到的,我使用具有段的concat函数从OACT获取数据。和OBGT表中的名称.OACT和OBGT有内部联接。所以我可以轻松更新所有数据。但现在OACT Segment_1和Segment_2的细分也可以在OASC中使用。但不同的是,在这个表中我只有segmentId字段。它只有两个ID,1和2。 1个segmentId值与Segment_1相同,而SegmentId下2个值与Segment_2相同。所以我想加入OASC表。所以,如果我从OASC表中放入条件,那么休息数据也应该更新
答案 0 :(得分:0)
如果您有以下两个表格,请回复您的评论......
Table_A (Col1 int, Col2 char)
1,A
2,B
3,C
Table_B (Col1 int, Col2 char)
10,X
11,Y
12,Z
...以及以下查询...
SELECT A.Col1, A.Col2, B.Col1, C.Col2
FROM Table_A as A
FULL OUTER JOIN Table_B as B ON 1 = 1
......你会得到......
Col1 Col2 Col1 Col2
1 A 10 X
1 A 11 Y
1 A 12 Z
2 B 10 X
2 B 11 Y
2 B 12 Z
3 C 10 X
3 C 11 Y
3 C 12 Z
我希望清除问题的完整外连接部分。 "更新"你的问题的一部分应该由触发器处理。
修改强>
哦!我想我明白了,现在......你的OASC表没有规范化。在ID
列中,它将为1或2.当它有1时,其他列应该加入到[segment_1]列中,当它有2时,它应该与[segment_2]列连接。如果我理解正确,这是解决方案......
INNER JOIN OASC ON (OASC.ID = 1 AND OASC.SomeColumn = [segment_1]) OR (OASC.ID = 2 AND OASC.SomeColumn = [segment_2])
答案 1 :(得分:0)
现在,通过使用此查询,我可以获得我想要的结果
SELECT distinct concat([Segment_0], '-' , [Segment_1], '-',[Segment_2]) As 'AcctCode',T1.[AcctName], T2.[Name],concat(T3.[Code],'-',T3.[Name]),T0.[DebLTotal] AS 'ANNUAL BUDGET KSH',
T0.[DebRLTotal] AS 'UTILISED BUDGET' , T3.[Name] , T3.[Code],
(T0.[DebLTotal]-T0.[DebRLTotal]) AS 'BALANCE BUDGET' ,
(SELECT concat(T3.Code , '-', T3.[Name]) where T3.SegmentId = '1') AS 'Project',
(SELECT concat(T3.Code , '-', T3.[Name]) where T3.SegmentId = '2') AS 'Distt'
FROM OBGT T0 INNER JOIN OACT T1 ON T0.[AcctCode] = T1.[AcctCode] INNER JOIN OBGS T2 ON T0.[Instance] = T2.[AbsId] INNER JOIN OASC T3 ON (T3.SegmentId = '1' AND T3.Code = [Segment_1] ) OR (T3.SegmentId = '2' AND T3.Code = [Segment_2])