Ваш главный вопрос: почему вы не получаете данные для данного запроса? Итак, вы хотите отладить и проверить, в чем проблема.
Итак, для данного параметра,
DECLARE @u_cnt INT;
DECLARE @f_yr DATE;
DECLARE @qrt VARCHAR(3);
DECLARE @dnum VARCHAR(5);
SET @u_cnt = 10000;
SET @f_yr = '2002-05-20';
SET @qrt = 'Q2';
SET @dnum = '43234';
, поэтому начните с базового
select *
FROM cforms c
--INNER JOIN spitems sp
--ON c.Id = s.FormId
WHERE c.Group = 'HR'
--AND c.bFlag IS NULL
--AND s.Report IN ('P', 'N')
, обратите внимание на часть комментариев, возвращает ли она данные, если да, то раскомментируйте AND c.bFlag IS NULL
и так раскомментирует другую часть.
Вы уверены, что это будет INNER JOIN
или LEFt JOIN
?
Поместите подзапрос периода в временную таблицу, хотя это не главная причина, если он возвращает меньше записей, то вы также можете использовать CTE,
Create table #tempperiod(period varchar(6))
insert into #tempperiod(period)
select
cast(year(@f_yr) +
case
when f.Quarter = 'Q1'
then (-1)
when f.Quarter = 'ALL'
and f.FyMonthNumber in ('10', '11', '12')
then (-1)
else (0)
end as varchar(4))
+ f.FyMonthNumber
from FyQm f
where f.Quarter = @qrt
-- in order to test,does it return any records,does it return desire output
select * from #tempperiod
LTRIM and RTRIM
) в столбцах, который используется в предикате. INNER JOIN
, тогда используйте EXISTS
предложение, потому что вам не нужны spitems sp
столбцы. ORDER BY 1
GroupLabel
тогда вы не нуждаетесь в них в предложении Order, потому что все строки будут 'HR' + '43234' Order by
, потому что coz Group By
будет сортировать его для ты и это единственное требование. Тщательно проверьте данные #tempperiod, формат такой же, как у
CONVERT (VARCHAR (6), c.changedate, 112)
Я - поклонник обработки Акронимов как одно слово при превращении в капитал, таким образом, мне нравится createSqlBuffer.
Рекомендации по именованию.NET (даже при том, что это - Паскаль, случился) предлагают только использовать для своей выгоды первую букву в акрониме, если это не двухбуквенный акроним (так, createSqlBuffer
, но createIOBuffer
).
Это может быть немного более симпатично, чтобы иметь fudgeSql (), чем fudgeSQL (), но последний иногда кажется более корректным в определенных контекстах.
Будут времена, когда Вы закончите с акронимом и другим акронимом друг рядом с другом в имени класса или имени метода, и это не так хорошо. Также немного легче только к единственному капиталу, когда я ввожу, так или иначе. Однако я не думаю, что было бы хорошо иметь его во всех случаях. Конечно, ввод-вывод-> IO, я не хотел бы видеть Io (луна Юпитера) как часть имени класса или имени метода. Возможно, это - одна из тех вещей, которая субъективна, и зависит от самого акронима. Пока Вы последовательны...
Одна вещь, в Java, с методами считывания и методами set состоит в том, что с верхним преобразованием регистра, Ваши переменные заканчивают тем, что имели необходимость быть:
private ACRO aCRO;
вместо более хорошего
private ACRO acro;
потому что сгенерированные методы считывания и методы set (в Eclipse, так или иначе)
void setAcro(ACRO acro)
несовместимы с соглашением о присвоении имен.
void setACRO(ACRO aCRO);
Если Вы видите то, что я имею в виду.
Мой опыт состоит в том, что Обычная конвенция состоит в том, чтобы рассматривать ограничения как разделителей слов, т.е., useSql не UseSQL. Правильный ответ должен использовать любую конвенцию, делает код самым четким, и используйте его последовательно. Как JeeBee указывает, это может быть затронуто предположениями о Ваших инструментах.
IMO, используя для своей выгоды только первую букву акронима имеет смысл когда преобразование регистра верблюда, если только потому, что, используя для своей выгоды все разрывы слова заключающее в корпус верблюда поведение. Прописные буквы в слове в корпусе верблюдом, как предполагается, указывают на запуск каждого слова, не следуют за случающимися нормальными английскими правилами преобразования регистра. Если Вы верхний регистр весь акроним, Вы теряете четкое разделение между концом акронима и начало следующего слова.
Также легче ввести (и немного более хороший на глазах) только с одним капиталом.
Я соглашаюсь о IO и большинстве других двухбуквенных сокращений, все же. Я обычно оставлял бы их использованными для своей выгоды, даже рассматривающее вышеупомянутое. В конце это действительно о том, что легче считать.