2014-02-11 3 views
-4

я получаю ошибку на первом 6 в кодеНеправильный синтаксис около «6»

Это происходит от динамического SQL, и это то, что она напечатана.

...+ '' of '' ('[email protected]+') AS TargetStatus...: всего это 6

SELECT [Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))+ ' of ' (6) AS TargetStatus, CAST(COUNT(*) AS FLOAT)/6 AS [Count] 
    FROM (
    SELECT CASE WHEN CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,ISNULL(t2.AUD_CloseDate,GETDATE())), 101)) > CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,t2.AUD_TargetDate), 101)) 
      THEN 'Over Due: ' 
      ELSE 'On Time: ' END AS [Target Status] 
      FROM #tmp1 t1 INNER JOIN dbo.Audit t2 
      ON t1.AUD_ID = t2.AUD_ID 
      WHERE t2.AUD_Deleted = 0 
      AND t2.AUD_LeadAuditor IN (SELECT ID FROM [dbo].[fx_SplitCommaSeperatedValues] ('29')) 
      AND t2.AUD_Year = 2011 
      AND t2.AUD_ORGID IN (Select Org_ID From [database].[dbo].fx_Rights_ORGIDs(120)) 
      AND AUD_Quarter IN (SELECT ID FROM [dbo].[fx_SplitCommaSeperatedValues] ('1'))) 

Не знаю, почему он сказал бы near 6 его 2 кронштейнами что-то?

+1

Для чего это (6) в первой строке? – Liath

+0

Он возвращается, например. '1 из 6',' 6' является '@ total' – TheUser

+0

Так что он должен быть внутри кавычек. –

ответ

1

Перемещение одинарной кавычки справа от 6.

2

Использования

[Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))+ ' of 6' AS TargetStatus 

6 должна быть частью строки.

В качестве альтернативы, используйте

[Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))+ ' of ' + CAST((6) AS NVARCHAR(15)) AS TargetStatus 
+0

'' ... + CAST (COUNT (*) AS NVARCHAR (255)) + '' of '' ('+ @ Total +') AS TargetStatus, CAST (COUNT (*) ... ''в динамическом sql, поэтому не может быть частью строки. – TheUser

+0

@ TheUser. Мой второй вариант доставляет то, что вам нужно? На самом деле, используя' + CAST (@Total AS NVARCHAR (15)) 'или аналогичный? – FrankPl

+0

no он по-прежнему дает 'Некорректный синтаксис рядом '(' .' – TheUser

0

Попробуйте переставить, что апостроф, ваш (6) должен быть частью строки.

SELECT [Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))+ ' of (6)' AS TargetStatus, CAST(COUNT(*) AS FLOAT)/6 AS [Count] 
    FROM (
    SELECT CASE WHEN CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,ISNULL(t2.AUD_CloseDate,GETDATE())), 101)) > CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,t2.AUD_TargetDate), 101)) 
      THEN 'Over Due: ' 
      ELSE 'On Time: ' END AS [Target Status] 
      FROM #tmp1 t1 INNER JOIN dbo.Audit t2 
      ON t1.AUD_ID = t2.AUD_ID 
      WHERE t2.AUD_Deleted = 0 
      AND t2.AUD_LeadAuditor IN (SELECT ID FROM [dbo].[fx_SplitCommaSeperatedValues] ('29')) 
      AND t2.AUD_Year = 2011 
      AND t2.AUD_ORGID IN (Select Org_ID From [database].[dbo].fx_Rights_ORGIDs(120)) 
      AND AUD_Quarter IN (SELECT ID FROM [dbo].[fx_SplitCommaSeperatedValues] ('1'))) 
+0

он исходит из динамического sql, поэтому не является частью строки. в tsql у меня есть '... ... + CAST (COUNT (*) AS NVARCHAR (255)) + '' of '' ('+ @ Total +') AS TargetStatus, CAST (COUNT (*) ... '' – TheUser

0

Если вы смотрите на печать STAUS и вы после строки, как «обработанном X 6», затем переместите (6) в к строке символов ...

SELECT [Target Status] + '' + CAST(COUNT(*) AS NVARCHAR(255))+ ' of 6' AS TargetStatus, CAST(COUNT(*) AS FLOAT)/6 AS [Count] 
    FROM (
    SELECT CASE WHEN CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,ISNULL(t2.AUD_CloseDate,GETDATE())), 101)) > CONVERT(DATETIME,CONVERT(CHAR(10),DATEADD(DAY,0,t2.AUD_TargetDate), 101)) 
      THEN 'Over Due: ' 
      ELSE 'On Time: ' END AS [Target Status] 
      FROM #tmp1 t1 INNER JOIN dbo.Audit t2 
      ON t1.AUD_ID = t2.AUD_ID 
      WHERE t2.AUD_Deleted = 0 
      AND t2.AUD_LeadAuditor IN (SELECT ID FROM [dbo].[fx_SplitCommaSeperatedValues] ('29')) 
      AND t2.AUD_Year = 2011 
      AND t2.AUD_ORGID IN (Select Org_ID From [database].[dbo].fx_Rights_ORGIDs(120)) 
      AND AUD_Quarter IN (SELECT ID FROM [dbo].[fx_SplitCommaSeperatedValues] ('1'))) 

Если вы хотите, чтобы «6» стало переменной, вам нужно будет использовать динамический SQL.

+0

в tsql у меня это как «... + CAST (COUNT (*) AS NVARCHAR (255)) + '' of '' ('+ @ Total +') AS TargetStatus, CAST (COUNT (*) ... ' ' – TheUser

+0

Вы имеете в виду, что в динамическом SQL у вас есть это, как указано выше ...' + '' of ('+ @Total +') '' '... – MoonKnight

+1

да, извините, первый раз с этим работаем. – TheUser

Смежные вопросы