第1栏:组合2分的SQL查询内部计算的列
(CASE
WHEN (SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) = 'General' THEN 'G'
WHEN (SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) = 'Honors' THEN 'H'
WHEN (SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) = 'WhosWho' THEN 'Y'
WHEN (SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) = 'Catholic' THEN 'J'
WHEN (SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) = 'Conservative' THEN 'B'
ELSE 'H'
END) AS Edition
第2栏:
(SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) AS editiontext,
(CASE
WHEN hdr.giftcarddiscount = 1 THEN 'GCDisc'
ELSE (CASE
WHEN si.itmclass = 'Distrib' THEN '-Disc'
WHEN si.itmclass = 'PremIR' THEN '0' + '-Disc'
WHEN si.itmclass = 'InstResp' THEN '5' + '-Disc'
ELSE ''
END)
END) AS 'ItemCode'
我需要既版和ItemCode在第三塔相结合。 -Disc(ItemCode)应该像G-Disc一样,但是0-Disc(ItemCode)应该变成0G-Disc。
我需要选择为
选择版,ItemCode,版+ ItemCode ....
我已经使用以下命令来创建第三列,但好奇,如果这可以以更好的方式来完成。 ..
(CASE
WHEN (SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) = 'General' THEN (
CASE
WHEN hdr.giftcarddiscount = 1 THEN 'GCDisc'
ELSE(CASE
WHEN si.itmclass = 'Distrib' THEN 'G-Disc'
WHEN si.itmclass = 'PremIR' THEN '0G' + '-Disc'
WHEN si.itmclass = 'InstResp' THEN '5G' + '-Disc'
ELSE ''
END)
END)
WHEN (SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) = 'Honors' THEN (
CASE
WHEN hdr.giftcarddiscount = 1 THEN 'GCDisc'
ELSE(CASE
WHEN si.itmclass = 'Distrib' THEN 'H-Disc'
WHEN si.itmclass = 'PremIR' THEN '0H' + '-Disc'
WHEN si.itmclass = 'InstResp' THEN '5H' + '-Disc'
ELSE ''
END)
END)
WHEN (SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) = 'WhosWho' THEN (
CASE
WHEN hdr.giftcarddiscount = 1 THEN 'GCDisc'
ELSE(CASE
WHEN si.itmclass = 'Distrib' THEN 'Y-Disc'
WHEN si.itmclass = 'PremIR' THEN '0Y' + '-Disc'
WHEN si.itmclass = 'InstResp' THEN '5Y' + '-Disc'
ELSE ''
END)
END)
WHEN (SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) = 'Catholic' THEN (
CASE
WHEN hdr.giftcarddiscount = 1 THEN 'GCDisc'
ELSE(CASE
WHEN si.itmclass = 'Distrib' THEN 'J-Disc'
WHEN si.itmclass = 'PremIR' THEN '0J' + '-Disc'
WHEN si.itmclass = 'InstResp' THEN '5J' + '-Disc'
ELSE ''
END)
END)
WHEN (SELECT edition
FROM clients.dbo.service
WHERE serv_id = hdr.serv_id) = 'Conservative' THEN (
CASE
WHEN hdr.giftcarddiscount = 1 THEN 'GCDisc'
ELSE(CASE
WHEN si.itmclass = 'Distrib' THEN 'B-Disc'
WHEN si.itmclass = 'PremIR' THEN '0B' + '-Disc'
WHEN si.itmclass = 'InstResp' THEN '5B' + '-Disc'
ELSE ''
END)
END)
ELSE (CASE
WHEN hdr.giftcarddiscount = 1 THEN 'GCDisc'
ELSE(CASE
WHEN si.itmclass = 'Distrib' THEN 'H-Disc'
WHEN si.itmclass = 'PremIR' THEN '0H' + '-Disc'
WHEN si.itmclass = 'InstResp' THEN '5H' + '-Disc'
ELSE ''
END)
END)
END) AS EditionItemCode
感谢您的输入,我将您的解决方案替换为我的查询,并且效果很好。 –