广告表,报纸栏取整数值。
Newspaper
1
2
3
像这样的 Newspaper
表
NewspaperName UnitPrice
A 12.00
B 11.00
C 5.00
查询;
select
case
when a.Newspaper = 1 then 'A'
when a.Newspaper = 2 then 'B'
when a.Newspaper = 3 then 'C'
when a.Newspaper = 4 then 'D'
else 'Empty'
end as NewspaperName
from Advert
left join...
这有点愚蠢。但我想将Advert
表连接到Newspaper
。如何加入?
答案 0 :(得分:3)
只需将您的“翻译查询”用作子查询:
SELECT AdvertTranslated.whatever1, Newspaper.whatever2 FROM
(select case when a.Newspaper = 1 then 'A'
when a.Newspaper = 2 then 'B'
when a.Newspaper = 3 then 'C'
when a.Newspaper = 4 then 'D'
else 'Empty'
end as NewspaperName,
whatever1
from Advert) AdvertTranslated
LEFT JOIN Newspaper ON AdvertTranslated.NewspaperName = Newspaper.NewspaperName
答案 1 :(得分:1)
在没有外键的情况下加入2个表是很奇怪的。无论哪种方式,如果您的地图是A - > 1,B - > 2等等你可以得到每个字母的ASCII值并减去64来得到直接映射。
然后你会得到:
SELECT * -- whatever you want to select
FROM Advert
LEFT JOIN Newspaper ON Advert.Newspaper = ASCII(Newspaper.NewspaperName) - 64
答案 2 :(得分:0)
declare @Advert table(newspaper int)
insert @Advert values(1), (2), (3), (4)
declare @Newspaper table(NewspaperName char(1), unitprice money)
insert @Newspaper values('A', 12.00), ('B', 11.00), ('C', 5.00)
SELECT a.newspaper, coalesce(b.Newspapername, 'Empty') NewspaperName, b.unitprice
FROM @Advert a
LEFT JOIN
@Newspaper b
ON char(a.newspaper + 64) = b.NewspaperName