我有一个包含如下所示数据的表
我创建这个查询是为了返回结果
SELECT id,customer_name,job_number,
IF(designer_name='des1',total_hrs, "") as des1,
IF(designer_name='des2',total_hrs, "") as des2,
IF(designer_name='des3',total_hrs, "") as des3,
IF(designer_name='des4',total_hrs, "") as des4
FROM practice.test;
如果有50个设计师,这将意味着我将不得不写如果语句多次,这将是不好的。
我想知道是否有更好的方法得到结果?
表代码:
--
-- Database: `practice`
--
-- --------------------------------------------------------
--
-- Table structure for table `test`
--
DROP TABLE IF EXISTS `test`;
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`designer_id` int(11) NOT NULL,
`designer_name` varchar(45) NOT NULL,
`customer_name` varchar(45) NOT NULL,
`job_number` varchar(45) NOT NULL,
`total_hrs` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
--
-- Dumping data for table `test`
--
INSERT INTO `test` (`id`, `designer_id`, `designer_name`, `customer_name`, `job_number`, `total_hrs`) VALUES
(1, 1, 'des1', 'aa', 'j101', '11'),
(2, 1, 'des1', 'bb', 'j102', '8'),
(3, 2, 'des2', 'cc', 'j103', '2'),
(4, 2, 'des2', 'dd', 'j104', '2'),
(5, 2, 'des2', 'ee', 'j105', '5'),
(6, 3, 'des3', 'ff', 'j106', '13'),
(7, 3, 'des3', 'gg', 'j107', '32'),
(8, 3, 'des3', 'ii', 'j108', '4'),
(9, 3, 'des3', 'kk', 'j109', '3'),
(10, 3, 'des3', 'll', 'j110', '4'),
(11, 4, 'des4', 'mm', 'j111', '1'),
(12, 4, 'des4', 'nn', 'j112', '6');
2条答案
按热度按时间svdrlsy41#
你想达到什么目的?如果是总小时数,试试看
9ceoxa922#
这是毫无意义的。我不认为你真的需要这个。做简单请求的问题是什么
你能解释一下,为什么你需要这样的结果吗。可能,代码中有错误的逻辑,什么将处理结果。