2015-12-16 2 views
0

Вот запрос MS Access нового имени столбца - SonucMF:SQL: создание нового имени столбца - преобразование запроса из MS Access

IIf(IsNull([KampanyaDetayTbl].[KMMF]);IIf(IsNull([KampanyaDetayTbl]![BMMF]);[Birlesmis_Data_Urun].[MF ADET];[KampanyaDetayTbl]![BMMF]);[KampanyaDetayTbl]![KMMF])

Я пытаюсь преобразовать этот запрос для зрения MS SQL :

IIf(IsNull([KampanyaDetayTbl].[KMMF],0),IIf(IsNull([KampanyaDetayTbl].[BMMF],0),[Birlesmis_Data_Urun].[MF ADET],[KampanyaDetayTbl].[BMMF]),[KampanyaDetayTbl].[KMMF])

Я получаю "Invalid или отсутствует выражение" ошибка.

Редактировать: Вот полный запрос;

SELECT 
    Birlesmis_Data_Urun.[Kampanya Adı], DepolarTbl.[BM Adı], 
    DepolarTbl.[Müşteri Adı], DepolarTbl.[BM Adı], 
    Birlesmis_Data_Urun.KOD, Birlesmis_Data_Urun.[DEPO ADI], 
    Birlesmis_Data_Urun.[ECZANE GLN KODU], 
    Birlesmis_Data_Urun.[ECZANE ADI], 
    Birlesmis_Data_Urun.[Düzeltilmiş Ürün Adı] AS [Ürün Adı], 
    Birlesmis_Data_Urun.[SATIŞ ADET], 
    IIf(IsNull([KampanyaDetayTbl].[KMMF]), IIf(IsNull([KampanyaDetayTbl]![BMMF]), [Birlesmis_Data_Urun].[MF ADET], [KampanyaDetayTbl]![BMMF]),[KampanyaDetayTbl]![KMMF]) AS SonucMF, 
    Birlesmis_Data_Urun.[MF ADET] AS [Istenen MF], 
    IIf([SonucMF]=[Istenen MF],"Yok","Var") AS Duzenleme, 
    [Fiyat] * ([Istenen MF] - [SonucMF]) AS Tutar 
FROM 
    ((Birlesmis_Data_Urun 
LEFT JOIN 
    KampanyaDetayTbl ON Birlesmis_Data_Urun.ID = KampanyaDetayTbl.MFID) 
INNER JOIN 
    DepolarTbl ON Birlesmis_Data_Urun.KOD = DepolarTbl.KOD) 
LEFT JOIN 
    UrunFiyatTbl ON (Birlesmis_Data_Urun.[Düzeltilmiş Ürün Adı] = UrunFiyatTbl.UrunAdi) AND (Birlesmis_Data_Urun.[Kampanya Adı] = UrunFiyatTbl.KampanyaAdi); 
+0

Покажите нам полный запрос. – marmarta

+0

добавлено полное Запрос доступа Ms –

ответ

1

Я вижу три проблемы:

  • восклицательных знаков (они не работают в SQL Server, как в Access, использовать точку, чтобы отделить имя таблицы и имя столбца)
  • кавычки - это лучшая практика, чтобы использовать одинарные кавычки
  • IsNull (х) функция - в SQL Server, используйте только х IS NULL

Try:

SELECT 
    Birlesmis_Data_Urun.[Kampanya Adı], DepolarTbl.[BM Adı], 
    DepolarTbl.[Müşteri Adı], DepolarTbl.[BM Adı], 
    Birlesmis_Data_Urun.KOD, Birlesmis_Data_Urun.[DEPO ADI], 
    Birlesmis_Data_Urun.[ECZANE GLN KODU], 
    Birlesmis_Data_Urun.[ECZANE ADI], 
    Birlesmis_Data_Urun.[Düzeltilmiş Ürün Adı] AS [Ürün Adı], 
    Birlesmis_Data_Urun.[SATIŞ ADET], 
    IIf([KampanyaDetayTbl].[KMMF] is null, IIf([KampanyaDetayTbl].[BMMF] is null, [Birlesmis_Data_Urun].[MF ADET], [KampanyaDetayTbl].[BMMF]),[KampanyaDetayTbl].[KMMF]) AS SonucMF, 
    Birlesmis_Data_Urun.[MF ADET] AS [Istenen MF], 
    IIf([SonucMF]=[Istenen MF],'Yok','Var') AS Duzenleme, 
    [Fiyat] * ([Istenen MF] - [SonucMF]) AS Tutar 
FROM 
    ((Birlesmis_Data_Urun 
LEFT JOIN 
    KampanyaDetayTbl ON Birlesmis_Data_Urun.ID = KampanyaDetayTbl.MFID) 
INNER JOIN 
    DepolarTbl ON Birlesmis_Data_Urun.KOD = DepolarTbl.KOD) 
LEFT JOIN 
    UrunFiyatTbl ON (Birlesmis_Data_Urun.[Düzeltilmiş Ürün Adı] = UrunFiyatTbl.UrunAdi) AND (Birlesmis_Data_Urun.[Kampanya Adı] = UrunFiyatTbl.KampanyaAdi); 
+0

Msg 4145, Level 15, State 1, Line 9 Выражение небулевого типа, указанное в контексте, где ожидается условие, рядом с '('. –

+0

ah, справа, дайте мне минуту для редактирования. – marmarta

+1

Вложенные 'IIf (... IS NULL)' становятся более читаемыми с помощью 'COALESCE'. – Andre

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