Как указать имена строк в MS Access 2007 - PullRequest
0 голосов
/ 23 июня 2011

У меня перекрестный запрос, и он извлекает только имя строки, если в базе данных есть связанные с ним данные.Например, если у меня есть три типа музыкальных инструментов:

Guitar

Piano 

Drums

Other

Мои результаты будут отображаться как:

Guitar        1

Drums         2

В нем нет Piano, потому что нет идентификатора, связанного сФортепиано в БД.Я знаю, что могу указать столбцы в меню свойств, то есть «1, 2, 3, 4, 5» будет помещать столбцы в БД для каждого, независимо от того, есть ли данные для их заполнения.

Я ищу подобное решение для строк.Любые идеи?

Кроме того, мне нужно, чтобы значения NULL отображались как 0.

Вот фактический SQL (забудьте пример инструмента выше)

TRANSFORM Count(Research.Patient_ID) AS CountOfPatient_ID
SELECT
  Switch(
    [Age]<22,"21 and under",
    [Age]>=22 And [AGE]<=24,"Between 22 And 24",
    [Age]>=25 And [AGE]<=29,"Between 25 And 29",
    [Age]>=30 And [AGE]<=34,"30-34",
    [Age]>=35 And [AGE]<=39,"35-39",
    [Age]>=40 And [AGE]<=44,"40-44",
    [Age]>44,"Over 44"
  ) AS Age_Range
FROM (Research
  INNER JOIN (
    SELECT ID, DateDiff("yyyy",DOB,Date()) AS AGE FROM Demographics
  ) AS Demographics ON Research.Patient_ID=Demographics.ID)
  INNER JOIN [Letter Status] ON Research.Patient_ID=[Letter Status].Patient_ID
WHERE ((([Letter Status].Letter_Count)=1))
GROUP BY Demographics.AGE, [Letter Status].Letter_Count
PIVOT Research.Site In (1,2,3,4,5,6,7,8,9,10);

Короче говоря,Мне нужно, чтобы все строки отображались независимо от того, есть ли значение (по какой-то причине LEFT JOIN не работает, поэтому, если вы можете, пожалуйста, используйте мой код для формирования вашего ответа), и мне также нужнозаменить значения NULL на 0.

Спасибо

Ответы [ 2 ]

1 голос
/ 23 июня 2011

Я считаю, что это связано с тем, как вы присоединяете таблицу инструментов к таблице идентификаторов. Если вы используете левое внешнее соединение от инструментов к идентификаторам, пианино должно быть включено. Было бы полезно увидеть ваши реальные таблицы и запросы, так как ваш вопрос довольно расплывчатый.

0 голосов
/ 30 июня 2011

Что если объединить выбор с жестко закодированным выбором с одним значением для каждой возрастной группы.

select 1 as Guitar, 1 as Piano, 1 as Drums, 1 as Other

При выполнении преобразования каждая строка будет иметь результат, равный +1 результатавы хотите.

foo      barTmpCount
-------- ------------
Guitar   2
Piano    1
Drums    3
Other    1

Затем вы можете сделать

select foo, barTmpCount - 1 as barCount from <query>

и получить что-то вроде этого

foo      barCount
-------- ---------
Guitar   1
Piano    0
Drums    2
Other    0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...