I have a query similar to below which shows record counts for several tables.

```
SELECT 'SomeTable' as tname, COUNT(*) as ttlRecords FROM SomeTable WHERE SubjectID = @SubjectID
UNION
SELECT 'AnotherTable' as tname, COUNT(*) as ttlRecords FROM AnotherTable WHERE SubjectID = @SubjectID
UNION
SELECT 'YetAnotherTable' as tname, COUNT(*) as ttlRecords FROM YetAnotherTable WHERE SubjectVersionID = @SubjectVersionID

```

The results look something like this...

```
tname            ttlRecords
SomeTable        25
AnotherTable     55
YetAnotherTable  120

```

Now, I'd like to modify this to further show some counts with a specific condition. For this example, I have a RegionID that specifies whether the record is associated with the Canadian or US region. So I'd like to show USRecordCount and CARecordCount on the same line with ttlRecordCount, like below...

```
tname            ttlRecords   USRecordCount   CARecordCount
SomeTable        25           10              15
AnotherTable     55           52              3
YetAnotherTable  120          100             20

```

I know I can do this using subqueries, like below, but it seems sloppy and probably slow.

```
SELECT 
  'SomeTable' as tname, 
  (SELECT COUNT(*) FROM SomeTable WHERE SubjectID = @SubjectID) as ttlRecords,
  (SELECT COUNT(*) FROM SomeTable WHERE SubjectID = @SubjectID AND RegionTypeID = 1) as USRecordCount,
  (SELECT COUNT(*) FROM SomeTable WHERE SubjectID = @SubjectID AND RegionTypeID = 2) as CARecordCount
UNION
SELECT 
  'AnotherTable' as tname, 
  (SELECT COUNT(*) FROM AnotherTable WHERE SubjectID = @SubjectID) as ttlRecords,
  (SELECT COUNT(*) FROM AnotherTable WHERE SubjectID = @SubjectID AND RegionTypeID = 1) as USRecordCount,
  (SELECT COUNT(*) FROM AnotherTable WHERE SubjectID = @SubjectID AND RegionTypeID = 2) as CARecordCount
UNION
SELECT 
  'YetAnotherTable' as tname, 
  (SELECT COUNT(*) FROM YetAnotherTable WHERE SubjectVersionID = @SubjectVersionID) as ttlRecords,
  (SELECT COUNT(*) FROM YetAnotherTable WHERE SubjectVersionID = @SubjectVersionID AND RegionTypeID = 1) as USRecordCount,
  (SELECT COUNT(*) FROM YetAnotherTable WHERE SubjectVersionID = @SubjectVersionID AND RegionTypeID = 2)as CARecordCount

```

My question is, is there a better way to write this?