Да, конечно можно.
1) Cписок обследованных с признаками Курит/Не курит:
SELECT card.Surname, card.Name, card.Patronymic, card.DateOfBirth, visit.VisitDate,
hat.Code,hat.Name, -- (007, Табакокурение)
hatv.Code,hatv.Name -- (1, Курит) / (2, Не курит)
FROM dbo.hlt_HealthCentreCard AS card
INNER JOIN dbo.hlt_HCVisit visit ON visit.rf_HealthCentreCardGUID = card.UGUID
INNER JOIN dbo.hlt_HCAnamnesisData had ON had.rf_HCVisitGUID = visit.UGUID
INNER JOIN dbo.hlt_HCAnamnesisType hat ON hat.UGUID = had.rf_HCAnamnesisTypeGUID and hat.Name = 'Табакокурение'
INNER JOIN dbo.hlt_HCAnamnesisTypeValue hatv ON hatv.UGUID = had.rf_HCAnamnesisTypeValueGUID
where card.UGUID <> '00000000-0000-0000-0000-000000000000'
and had.Value2 = 1
ORDER BY card.Surname, card.Name, card.Patronymic, card.DateOfBirth, visit.VisitDate
2) Итоговое количество
SELECT hatv.Name, count(distinct card.UGUID) as Cnt
FROM dbo.hlt_HealthCentreCard AS card
INNER JOIN dbo.hlt_HCVisit visit ON visit.rf_HealthCentreCardGUID = card.UGUID
INNER JOIN dbo.hlt_HCAnamnesisData had ON had.rf_HCVisitGUID = visit.UGUID
INNER JOIN dbo.hlt_HCAnamnesisType hat ON hat.UGUID = had.rf_HCAnamnesisTypeGUID and hat.Name = 'Табакокурение'
INNER JOIN dbo.hlt_HCAnamnesisTypeValue hatv ON hatv.UGUID = had.rf_HCAnamnesisTypeValueGUID
where card.UGUID <> '00000000-0000-0000-0000-000000000000'
and had.Value2 = 1
group by hatv.Name
order by hatv.Name
результат в виде:
Name Cnt
Курит 1337
Не курит 7680