Один метод использует union all
и агрегацию:
select type1, col1,
max(request1) as request1, max(due1) as due1,
max(request2) as request2, max(due2) as due2,
max(request3) as request3, max(due3) as due3
from ((select type1, col1,
request as request1, due as due1,
0 as request2, 0 as due2,
0 as request3, 0 as due3
from #tmpa
) union all
(select type1, col1,
0 as request1, 0 as due1,
request as request2, due as due2,
0 as request3, 0 as due3
from #tmpb
) union all
(select type1, col1,
0 as request1, 0 as due1,
0 as request2, 0 as due2,
request as request3, due as due3
from #tmpc
)
) abc
group by type1, col1;
Другой подход - full join
, но это может быть сложно:
select a.type1, a.col1,
coalesce(a.request, 0) as request1, coalesce(a.due, 0) as due1,
coalesce(b.request, 0) as request2, coalesce(b.due, 0) as due2,
coalesce(c.request, 0) as request3, coalesce(c.due, 0) as due3
from #tmpA a full join
#tmpB b
on b.type1 = a.type1 and b.col1 = a.col1 full join
#tmpC c
on c.type1 = coalesce(a.type1, b.type1) and
c.col1 = coalesce(a.col1, b.col1);
Вы можете определить пользовательский ControlTemplate
и переопределить метод OnRender
внутреннего ScrollViewer
элемента RichTextBox
:
public class MyScrollViewer : ScrollViewer
{
protected override void OnRender(DrawingContext drawingContext)
{
base.OnRender(drawingContext);
drawingContext.DrawLine(new Pen(Brushes.LimeGreen, 11.0),
new Point(1, 1), new Point(115, 115));
}
}
XAML: [117 ]
<RichTextBox>
<RichTextBox.Resources>
<SolidColorBrush x:Key="TextBox.Static.Border" Color="#FFABAdB3"/>
<SolidColorBrush x:Key="TextBox.MouseOver.Border" Color="#FF7EB4EA"/>
<SolidColorBrush x:Key="TextBox.Focus.Border" Color="#FF569DE5"/>
</RichTextBox.Resources>
<RichTextBox.Template>
<ControlTemplate TargetType="{x:Type TextBoxBase}">
<Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
<local:MyScrollViewer x:Name="PART_ContentHost" Focusable="false" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="false">
<Setter Property="Opacity" TargetName="border" Value="0.56"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource TextBox.MouseOver.Border}"/>
</Trigger>
<Trigger Property="IsKeyboardFocused" Value="true">
<Setter Property="BorderBrush" TargetName="border" Value="{StaticResource TextBox.Focus.Border}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</RichTextBox.Template>
</RichTextBox>