简体   繁体   English

SQL:创建新的列名-从MS Access转换查询

[英]SQL : creating a new column name - converting query from MS Access

Here's the MS Access query of a new column name - SonucMF: 这是一个新列名称-SonucMF的MS Access查询:

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

I'm trying to convert this query to MS SQL view: 我正在尝试将此查询转换为MS SQL视图:

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

I'm getting "Invalid or missing expression" error. 我收到“无效或缺少表达式”错误。

Edit : Here's the complete query ; 编辑:这是完整的查询;

 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);

I can see three problems: 我可以看到三个问题:

  • exclamation marks (these don't work in SQL Server like in Access; use a dot to separate table name and column name) 感叹号(这些字符在Access中不能像在Access中那样在SQL Server中工作;使用点分隔表名和列名)
  • quotation marks - it's better practice to use single quotes 引号-最好使用单引号
  • IsNull(x) function - in SQL Server, use just x IS NULL IsNull(x)函数-在SQL Server中,仅使用x 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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM