我正在尝试弄清楚我的CASE逻辑。如果FABRIC RANGE列的值等于_SPECIAL,则显示Description列的值。
所以,我们现在得到的信息如下:
PO NUMBER FABRIC RANGE DESCRIPTION
P18030096 Fiesta Indigo Indigo
P18030097 _SPECIAL Dolly Denim
P18030098 Quantum Nebula Nebula
P18030098 _SPECIAL Dolly Magenta我们希望看到的是给出这样的结果:
PO number Fabric Range Description
P18030096 Fiesta Indigo Indigo
P18030097 Dolly Denim Dolly Denim
P18030098 Quantum Nebula Nebula
P18030098 Dolly Magenta Dolly Magenta我的代码是:
SELECT dbo.PO.PONo AS [PO Number],
dbo.ReceivingDetails.ItemVendorNumber AS [Fabric Range], dbo.ReceivingDetails.Description我知道我需要在什么时候放案例,但这可能是一个好主意:
发布于 2018-03-22 11:10:46
列名ItemVendorNumber没有任何意义,因为它不是一个数字,但我看到这正是您在示例查询中使用的。PO.PONo也是如此(除非这是您的文字列名[PO.PONo]?)
SELECT PO.PONo [PO Number]
,CASE WHEN rd.[ItemVendorNumber] = '_SPECIAL'
THEN rd.[DESCRIPTION]
ELSE rd.[ItemVendorNumber]
END [FABRIC RANGE]
,rd.[Description]
FROM ReceivingDetails rd这是一个[DEMO]
测试设置:
CREATE TABLE ReceivingDetails ([PO.PONo] VARCHAR(50)
, ItemVendorNumber VARCHAR(100)
, Description VARCHAR(500))
INSERT INTO ReceivingDetails
VALUES ('P18030096','Fiesta Indigo','Indigo'),
('P18030097','_SPECIAL','Dolly Denim'),
('P18030098','Quantum Nebula','Nebula'),
('P18030098','_SPECIAL','Dolly Magenta')
--verify
SELECT * FROM ReceivingDetails
--results OP asked for
SELECT [PO.PONo] [PO Number], CASE
WHEN rd.[ItemVendorNumber] = '_SPECIAL'
THEN rd.[DESCRIPTION]
ELSE rd.[ItemVendorNumber]
END [FABRIC RANGE], rd.[Description]
FROM ReceivingDetails rd

https://stackoverflow.com/questions/49419882
复制相似问题