msg 102, уровень 15, состояние 1, строка 9 Неверный синтаксис рядом с '(' - - PullRequest
1 голос
/ 24 ноября 2011

Я работаю над запросом кросс-таблицы в SQL Server 2008. Все выглядит нормально, кроме этой ошибки, которую я получаю.

Вот мой код:

select * from 
    (select ITEM_CODE,NET_PRODUCTION_QUANTITY,RAW_MATERIAL_CODE,DATE_ID  from dbo.ODST_PRODUCTION_TRANS 
    ) n
    pivot
    (sum(NET_PRODUCTION_QUANTITY) for datename(month,DATE_ID) In ([January],[February],[March],[April],[May],[June])) as pvt
where RAW_MATERIAL_CODE = 'X' and DATE_ID between '01-Jan-11' and '30-Jun-11'.

Проблема в том, где datename(month,date_id), но я не могу понять это. Кто-нибудь может дать мне решение?

Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 24 ноября 2011

должно быть так:

select * from         
        (select ITEM_CODE,NET_PRODUCTION_QUANTITY,RAW_MATERIAL_CODE,DATE_ID,datename(month,[DATE_ID]) as dtt 
from dbo.ODST_PRODUCTION_TRANS) as n
       pivot

            (
        sum(NET_PRODUCTION_QUANTITY) 
        for [dtt] IN ([January],[February],[March],[April],[May],[June])) as pvt 
        where RAW_MATERIAL_CODE = 'X' and DATE_ID between '01-Jan-11' and '30-Jun-11'
0 голосов
/ 24 ноября 2011

Я не думаю, что FOR-часть сводки может быть вычисленным значением во время разворота, и она должна быть в вашем наборе результатов.

select * from 
    (select ITEM_CODE,NET_PRODUCTION_QUANTITY,RAW_MATERIAL_CODE,DATE_ID,datename(month,DATE_ID) as dn  from dbo.ODST_PRODUCTION_TRANS 
    ) n
    pivot
    (sum(NET_PRODUCTION_QUANTITY) for dn In ([January],[February],[March],[April],[May],[June])) as pvt
where RAW_MATERIAL_CODE = 'X' and DATE_ID between '01-Jan-11' and '30-Jun-11'
0 голосов
/ 24 ноября 2011

Попробуйте

select * from 
    (select ITEM_CODE,NET_PRODUCTION_QUANTITY,RAW_MATERIAL_CODE,DATE_ID, datename(month,DATE_ID) as Month from dbo.ODST_PRODUCTION_TRANS 
    ) n
    pivot
        (
            sum(NET_PRODUCTION_QUANTITY) 
            for Month 
            In ([January],[February],[March],[April],[May],[June])
        ) as pvt
where RAW_MATERIAL_CODE = 'X' and DATE_ID between '01-Jan-11' and '30-Jun-11'

Я не думаю, что сводному полюсу нравится выражение имени, поэтому я переместил его в запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...