Пока я не знаю, как предварять «1», «второй» и т.д., вы можете предварять 1, 2, и т.д. Вот пример:
SELECT
CONCAT(CASE WHEN cnt > 1 THEN CONCAT(RN,'-') ELSE '' END, t.Proc) Proc
FROM
(
SELECT
@curRow:=CASE WHEN @prevRow = a.Proc THEN @curRow+1 ELSE 1 END AS rn,
a.Proc,
@prevRow:=Proc grp
FROM (
SELECT Proc FROM Procedures ORDER BY Proc
) a JOIN (SELECT @curRow:=0) r
) t JOIN
(
SELECT Proc, COUNT(Proc) cnt
FROM Procedures
GROUP BY Proc
) c ON t.proc = c.proc
И вот SQL Fiddle.
В принципе, вам необходимо сгруппировать свои процедуры вместе, указывая номер строки для каждой группы. Для тех записей, у которых более одного, добавьте номер строки.
--- EDIT ---
Учитывая ваш комментарий, ваш запрос просто должен быть помещен в основной FROM (ближе к середине), а затем вы должны принести procno до каждого оператора выбора. Вот что-то, что должно быть очень близко, хотя непроверено:
SELECT
procno,
CONCAT(CASE WHEN cnt > 1 THEN CONCAT(RN,'-') ELSE '' END, t.Proc) Proc
FROM
(
SELECT
@curRow:=CASE WHEN @prevRow = a.Proc THEN @curRow+1 ELSE 1 END AS rn,
a.Proc,
a.Procno,
@prevRow:=Proc grp
FROM (
SELECT
`incurredcharges`.`procedure_no` procno,
`c`.`procedure` proc
FROM
incurredcharges
INNER JOIN (
SELECT `procedure`, `procedure_no` FROM `charges`
UNION ALL
SELECT `confinement`, `procedure_no` FROM `confinement`
UNION ALL
SELECT `service`, `procedure_no` FROM `ultrasound`
) c ON `incurredcharges`.`procedure_no` = c.`procedure_no`
WHERE `incurredcharges`.`patient_no` = '$id'
ORDER BY `c`.`procedure`
) a
JOIN (SELECT @curRow:=0) r
) t JOIN
(
SELECT
`incurredcharges`.`procedure_no` procno,
`c`.`procedure` proc, Count(*) cnt
FROM
incurredcharges
INNER JOIN (
SELECT `procedure`, `procedure_no` FROM `charges`
UNION ALL
SELECT `confinement`, `procedure_no` FROM `confinement`
UNION ALL
SELECT `service`, `procedure_no` FROM `ultrasound`
) c ON `incurredcharges`.`procedure_no` = c.`procedure_no`
WHERE `incurredcharges`.`patient_no` = '$id'
GROUP BY `incurredcharges`.`procedure_no`,
`c`.`procedure`
) c ON t.proc = c.proc
Удачи.
Это замечательно. Но у меня возникли проблемы с его включением с помощью моего запроса sql. – jeffmangum
@jeffmangum - Рад слышать, что это может работать, но извините за неприятность. Я отредактировал свой ответ - см. Выше. Дайте мне знать, как это работает для вас. Если бы вы могли построить скрипку, я бы ее протестировал, но это должно быть довольно близко. Удачи (и не забудьте принять ответ, если это вам помогло) :) – sgeddes
@jeffmangum - вам также нужно будет обновить последний запрос, который используется для получения счета - я снова отредактирую сейчас ... – sgeddes