sql-server - 为什么不能在select语句中使用if语句?有人知道另一种方法吗?

标签 sql-server if-statement

Select b.ItemKey, a.CatKey, a.ParentKey, a.CatName, g.ItemID, c.UserFld1, c.UserFld3, c.UserFld5, f.UOMID, e.SizeValue
From dbo.timWebCategory a Inner JOIN
    dbo.timWebCategoryItem b ON a.CatKey = b.CatKey Inner JOIN
    mas500_app.dbo.timItem c ON b.ItemKey = c.ItemKey Inner JOIN
    dbo.cpsIMItemDetails d ON c.ItemKey = d.ItemKey Inner JOIN
    dbo.timItemSize e ON c.ItemKey = e.ItemKey Left JOIN
    dbo.timVolumeUOM f ON e.VolUOMKey = f.VolUOMKey Left JOIN
    mas500_app.dbo.vWebItem g ON c.ItemKey = g.ItemKey
Where a.Catkey = @Key
AND d.IntFlg = 1
If @color is not Null 
Begin
    AND c.UserFld1 = @color
End
Order By f.UOMID, e.SizeValue**


返回此:
关键字“ AND”附近的语法不正确。

最佳答案

试试看...

Select b.ItemKey, a.CatKey, a.ParentKey, a.CatName, g.ItemID, c.UserFld1, c.UserFld3, c.UserFld5, f.UOMID, e.SizeValue
From dbo.timWebCategory a Inner JOIN
    dbo.timWebCategoryItem b ON a.CatKey = b.CatKey Inner JOIN
    mas500_app.dbo.timItem c ON b.ItemKey = c.ItemKey Inner JOIN
    dbo.cpsIMItemDetails d ON c.ItemKey = d.ItemKey Inner JOIN
    dbo.timItemSize e ON c.ItemKey = e.ItemKey Left JOIN
    dbo.timVolumeUOM f ON e.VolUOMKey = f.VolUOMKey Left JOIN
    mas500_app.dbo.vWebItem g ON c.ItemKey = g.ItemKey
Where a.Catkey = @Key
AND d.IntFlg = 1
AND (@color = c.UserFld1 OR @color is null)
Order By f.UOMID, e.SizeValue**

关于sql-server - 为什么不能在select语句中使用if语句?有人知道另一种方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7033882/

相关文章:

sql-server - STintersects() 找到交点

java - 使用 Java 中的 if else 语句确定两个字符的字母顺序

javascript - 为什么会出现这种情况

sql-server - SQL Server 2008 Varbinary(Max) 列 - 28Mb 图像创建 3.2Gb 数据库

java - 通过 JPA 条件查询从 SQL View 获取列表时出错

SQL Server BEGIN/END 与 BEGIN TRANS/COMMIT/ROLLBACK

php - MYSQL 没有向我的数据库添加信息

android - If Else Android(否则总是激活)

c - 基本 scanf 语句错误

sql - 临时表和整理问题?