我正在使用Telerik独立报告应用程序提取数据。我有一个名为" Product"其中一列被称为" ProductStatus
"。 ProductStatus
是一个介于1-12之间的int值。细分如下:
"1"=Active
"2"=Retired
"3"=Processing
"5"=Archived
"6"=Active-Empty
"7"=Available
"8"=Resigned
"9"=Terminated
"10"=Legal Freeze
"11"=Admin Hold
"12"=Reserved
我的问题是:如何编写一个能够看到" ProductStatus
"如果=到1则返回" Active
"或者如果=到2则返回" Retired
"等
答案 0 :(得分:0)
你有2种方法可以做到这一点
使用CASE
并在请求中对翻译表进行编码
SELECT CASE WHEN 1 THEN 'Active' ... END FROM ...;
将转换表放在数据库表中并使用连接:
CREATE TABLE product_status(id INTEGER, status VARCHAR(32));
INSERT INTO product_status(id, status) VALUES(1, 'Active');
...
SELECT ps.status, ... FROM product_status, ... WHERE product_status.id = ..., ... ;
答案 1 :(得分:0)
您可以创建一个包含所有状态文本的表格,如下所示:
CREATE TABLE statusText
([id] int, [text] varchar(12))
;
INSERT INTO statusText
([id], [text])
VALUES
(1, 'Active'),
(2, 'Retired'),
(3, 'Processing'),
(5, 'Archived'),
(6, 'Active-Empty'),
(7, 'Available'),
(8, 'Resigned'),
(9, 'Terminated'),
(10, 'Legal Freeze'),
(11, 'Admin Hold'),
(12, 'Reserved')
;
然后像这样加入Products表:
SELECT a.*, b.Text
FROM Products a INNER JOIN statusText b
ON a.ProductStatus=b.id