Следующий код не работает, и он должен быть опечаткой где-то;Операторы case SQL Server 2012 с ошибкой
SELECT
ui.ID AS userid,
EmpType = CASE
WHEN c.id IN (1, 3)
THEN 'Public Accounting'
WHEN (SELECT COUNT(csc1.id)
FROM companies_sic_codes AS csc1
WHERE csc1.id = c.id
AND csc1.sic_code IN (9100, 9811)) > 0
THEN 'Government'
WHEN (SELECT COUNT(csc2.id)
FROM companies_sic_codes AS csc2
WHERE csc2.id = c.id
AND csc2.sic_code IN (8930, 8931, 8721, 8742, 8748)) > 0
THEN 'Public Accounting'
WHEN (SELECT COUNT(csc3.id)
FROM companies_sic_codes AS csc3
WHERE csc3.id = c.id
AND csc3.sic_code = 8932) > 0
THEN 'Tax Consulting'
WHEN (SELECT COUNT(csc4.id)
FROM companies_sic_codes AS csc4
WHERE csc4.id = c.id
AND csc4.sic_code IN (8100, 8111)) > 0
THEN 'Law Firms'
WHEN (SELECT COUNT(csc5.id)
FROM companies_sic_codes AS csc5
WHERE csc5.id = c.id
AND csc5.sic_code IN (8211, 8220, 8221, 8222)) > 0
THEN 'Academia'
ELSE 'Corporate In-House'
END
FROM
dbo.Companies AS c
INNER JOIN
dbo.Users_Info AS ui ON c.ID = ui.Current_Company_Number
WHERE
(ui.ID = 36075)
users_info
колонна current_company_number
для пользователя 36075 является 26910. companies_sic_codes
стола для компании 26910 имеет три строки и sic_codes из 7361, 7361 и 7363. Я не думаю, что дубликат sic_code 7361 может вызвать проблемы. на самом деле; Я удалил эту строку и получил те же результаты.
Результат:
userid EmpType
36075 'Law Firms'
Я должен быть Corporate In-House
EDIT
Если я удалить "когда то 'юридические фирмы'" я получаю правильные результаты.
Возможно ли, что вы перепутали номер компании? Может, 29610 или что-то еще? Вы рассуждаете правильно. – shawnt00
Не соответствует ли 'company_sic_codes.id' неправильный столбец? – shawnt00