Это пример необработанных данных, с которыми я работаю, из таблицы «employeeRatings» до вывода cfquery:
(showcasing employeeID:1128 for the month of May)
employeeID | Possible_Factor | Factor | ratingDate
=======================================================================
1128 | .1 | .1 | 5/25/2013 2:05:13 PM
1128 | .1 | .0 | 5/22/2013 9:30:43 AM
1128 | .2 | .1 | 5/17/2013 9:42:09 AM
1128 | .1 | .1 | 5/13/2013 8:07:15 AM
1128 | .1 | .0 | 5/10/2013 7:52:51 AM
1128 | .4 | .0 | 5/6/2013 12:41:12 PM
Вот cfquery (оператор SQL):
SELECT ROUND(100 * (SUM(Factor) / SUM(Possible_Factor)), 2) AS employeeRating, CONVERT(CHAR(4), ratingDate, 100) + CONVERT(CHAR(4), ratingDate, 120) AS month, employeeID, DATEADD(MONTH, DATEDIFF(MONTH, 0, ratingDate), 0) AS shortdate
FROM employeeRatings
GROUP BY CONVERT(CHAR(4), ratingDate, 100) + CONVERT(CHAR(4), ratingDate, 120), DATEADD(MONTH, DATEDIFF(MONTH, 0, ratingDate), 0), employeeID
ORDER BY employeeID, DATEADD(MONTH, DATEDIFF(MONTH, 0, ratingDate), 0) DESC
После cfquery вывод будет выглядеть так:
employeeID | employeeRating | month | shortdate
=======================================================================
1128 | 30 | May 2013 | 5/1/2013 12:00:00 AM
1128 | 60 | April 2013 | 4/1/2013 12:00:00 AM
1128 | 90 | Jan 2013 | 1/1/2013 12:00:00 AM
7310000 | 95 | April 2013 | 4/1/2013 12:00:00 AM
7310000 | 85 | Mar 2013 | 3/1/2013 12:00:00 AM
7310000 | 75 | Feb 2013 | 2/1/2013 12:00:00 AM
7310000 | 55 | Jan 2013 | 1/1/2013 12:00:00 AM
444981 | 27 | Mar 2013 | 3/1/2013 12:00:00 AM
444981 | 77 | Jan 2013 | 1/1/2013 12:00:00 AM
444981 | 97 | Nov 2012 | 11/1/2012 12:00:00 AM
444981 | 37 | Sept 2012 | 9/1/2012 12:00:00 AM
444981 | 47 | Aug 2012 | 8/1/2012 12:00:00 AM
Мне нужно взять сотрудника и перечислить его ПОСЛЕДНИЕ ТРИ рейтинга (если месяц нулевой, пропустить нулевой месяц и получить следующий месяц с рейтингом, чтобы продемонстрировать последние три задокументированных рейтинга). Это динамический запрос, в котором перечислены более 200 сотрудников. Ниже приведен желаемый результат:
supplierID | LastRating | SecondLastRating | ThirdLastRating
======================================================================
1128 | 30 | 60 | 90
7310000 | 95 | 85 | 75
444981 | 27 | 77 | 97
Я использую ColdFusion на SQL Server 2000 (совместимость 80), однако версия ColdFusion, которую я использую, не поддерживает атрибут группы cfloop. Я хотел бы взять новый вывод и поместить его в новый запрос, чтобы его можно было СОЕДИНИТЬ с другим запросом. Решение = подарок Starbucks от FB ;) Спасибо всем за ваше время и внимание!!!!
cfquery
(а не над таблицей базы данных). Если вы можете изменить cfquery, это можно сделать и в SQL. Если нет, вам придется использовать код CF, как предлагали другие. - person Leigh   schedule 05.06.2013