我有以下SQL查询,我试图仅返回MAKE设置为' BANER'的发票,这是获取发票表的所有行,底部包含所有BANER行,如何只在BANER为make的地方返回行?
SELECT [ART_NO],
[QTY],
[DUE_DATE],
make=CASE make
WHEN 'BANER' THEN 'BANER'
ELSE ' ' + make
END,
[PRODUCT],[PRICE],[DETAIL],
[COLOUR],[RS1],[RS2],[RS3],
[RS4],[RS5],[RS6],[RS7],[RS8],
[RS9],[RS10],[RS11],[RS12]
FROM [DBKular].[dbo].[INVOISTK]
WHERE make != ''
ORDER BY [MAKE] ASC,
[DUE_Date]
答案 0 :(得分:2)
您的查询中不需要case statement
只需要Where clause
。过滤Make = 'Baner'
后,不会有任何其他品牌。
SELECT [ART_NO],
[QTY],
[DUE_DATE],
[make],
[PRODUCT],[PRICE],[DETAIL],
[COLOUR],[RS1],[RS2],[RS3],
[RS4],[RS5],[RS6],[RS7],[RS8],
[RS9],[RS10],[RS11],[RS12]
FROM [DBKular].[dbo].[INVOISTK]
WHERE make = 'BANER'
ORDER BY [MAKE] ASC,
[DUE_Date]
答案 1 :(得分:1)
那么,过滤特定值行的一种方法是使用旨在过滤特定值行的子句 - the WHERE clause!
SELECT
[ART_NO],
[QTY],
[DUE_DATE],
make=
CASE make
WHEN 'BANER'
THEN 'BANER'
ELSE ' ' + make
END,
[PRODUCT],
[PRICE],
[DETAIL],
[COLOUR],
[RS1],
[RS2],
[RS3],
[RS4],
[RS5],
[RS6],
[RS7],
[RS8],
[RS9],
[RS10],
[RS11],
[RS12]
FROM
[DBKular].[dbo].[INVOISTK]
WHERE make = 'BANER'
ORDER BY
[MAKE] asc,
[DUE_Date]