Как объединить кросс-таблицу в одну строку? Access 2007 - PullRequest
0 голосов
/ 24 августа 2011

У меня есть перекрестный запрос с несколькими интересующими атрибутами.В этом запросе наличие определенного атрибута да или нет (1 = да 0 = нет).Прямо сейчас, если у человека есть два атрибута, они представлены двумя строками в наборе данных.И если у них есть три проблемы, то они представлены тремя рядами.Мне нужен способ отображения нескольких атрибутов в одной строке.Например, если у них диабет и табак, в одном ряду под этим столбцом будет стоять «1», а не прямо сейчас, где есть 1, за которым следуют все нули для диабета.И строка «табак» имеет 0 в каждом столбце, кроме табака (где это единица).

table (Нажмите, чтобы увеличить)

- это экранная крышка того, как выглядит вывод.И мне нужен только один ряд на пациента, независимо от того, сколько у них проблем.

ниже мой sql.

TRANSFORM IIf([tblComorbidity.comorbidityexplanation]=[tblComorbidity.comorbidityexplanation],1,0) AS Morbidity
SELECT
  Person.PersonID,
  Person.Age,
  tblKentuckyCounties.Metro,
  tblKentuckyCounties.Appalachian,
  Person.asiaAdmit,
  Person.Sex
FROM tblKentuckyCounties
  INNER JOIN (tblComorbidity
    INNER JOIN (Person
      INNER JOIN tblComorbidityPerson ON Person.PersonID = tblComorbidityPerson.personID
    ) ON tblComorbidity.ID = tblComorbidityPerson.comorbidityFK
  ) ON tblKentuckyCounties.ID = Person.County
WHERE (((tblComorbidity.comorbidityexplanation)="anxiety and depression"
     Or (tblComorbidity.comorbidityexplanation)="heart"
     Or (tblComorbidity.comorbidityexplanation)="respiratory"
     Or (tblComorbidity.comorbidityexplanation)="uti"
     Or (tblComorbidity.comorbidityexplanation)="diabetes"
     Or (tblComorbidity.comorbidityexplanation)="hypertension"
     Or (tblComorbidity.comorbidityexplanation)="tobacco"))
GROUP BY
  Person.PersonID,
  Person.Age,
  tblKentuckyCounties.Metro,
  tblKentuckyCounties.Appalachian,
  Person.asiaAdmit,
  Person.Sex,
  tblKentuckyCounties.Appalachian,
  tblKentuckyCounties.Metro,
  tblComorbidity.comorbidityexplanation
PIVOT tblComorbidity.comorbidityexplanation;

1 Ответ

1 голос
/ 25 августа 2011

Изменено значение на количество элементов, если кто-то дважды выполнил более 1 условия и попытался очистить некоторое форматирование.В моем ограниченном тестировании это сработало, но, возможно, потребуются некоторые изменения, поскольку у меня нет ваших данных, но оно должно помочь вам начать работу.

TRANSFORM nz(Count([tblComorbidity.comorbidityexplanation]),0) AS Morbidity

SELECT Person.PersonID, Person.Age, tblKentuckyCounties.Metro, tblKentuckyCounties.Appalachian, Person.asiaAdmit, Person.Sex

FROM tblKentuckyCounties INNER JOIN (tblComorbidity INNER JOIN (Person INNER JOIN tblComorbidityPerson ON Person.PersonID = tblComorbidityPerson.personID) ON tblComorbidity.ID = tblComorbidityPerson.comorbidityFK) ON tblKentuckyCounties.ID = Person.County

WHERE tblComorbidity.comorbidityexplanation IN ('anxiety and depression', 'heart', 'respiratory', 'uti', 'diabetes', 'hypertension', 'tobacco')

GROUP BY Person.PersonID, Person.Age, tblKentuckyCounties.Metro, tblKentuckyCounties.Appalachian, Person.asiaAdmit, Person.Sex

PIVOT tblComorbidity.comorbidityexplanation;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...