【发布时间】:2017-10-14 00:52:30
【问题描述】:
我正在为公司的树创建一个这样的存储过程
有 2 张桌子。 tb_Dept 和 tb_Company。 Table的数据是这样的。
tb_dept
CompanyCode DeptCode DisplayName ParentDeptCode DeptEmail DisplayYN SortOrder
H101 1A07 RnD 1000 RnD@test.com Y 0
H101 1907 Solution 1000 Solution@test.com Y 0
H101 1A34 Management 1000 Management@test.com Y 0
H101 1000 CEO org ceo@test.com Y 0
tb_Company
CompanyCode CompanyName GIDCode
H101 TestIT 1000
K101 DevelopeIT 1001
S101 AnalysisIT 1024
第一个 if-select 语句,结果如下。
DeptCode DeptName HasSubDept DeptEmail CompanyCode CompanyName
H101 TestIT 0 H101 TestIT
我想添加这个结果
DeptCode DeptName HasSubDept DeptEmail CompanyCode CompanyName
H101 CEO 0 H101 TestIT
所以,最后第一个 if-select 语句结果是这样的。
DeptCode DeptName HasSubDept DeptEmail CompanyCode CompanyName
H101 TestIT 0 H101 TestIT
H101 CEO 0 H101 TestIT
是的,我知道它看起来很奇怪,但我必须这样做。
如何修改第一个 if 语句或添加另一个代码?
请有人帮助我。我的存储过程如下。
USE TestChart
GO
DECLARE @companyCode varchar(20)
, @parentDeptCode varchar(20)
, @isRelative bit
, @langCode varchar(20)
SELECT @companyCode = 'H101'
,@parentDeptCode = ''
,@isRelative = 0
,@langCode = 'ko'
IF @parentDeptCode IS NULL OR @parentDeptCode = ''
BEGIN
SELECT
CompanyCode AS DeptCode
, CompanyName AS DeptName
, dbo.uf_HasChildDept(CompanyCode) AS HasSubDept
, '' AS DeptEmail
, CompanyCode
, CompanyName
FROM dbo.tb_Company
WHERE CompanyCode = @companyCode
END
ELSE
BEGIN
SELECT
D.DeptCode
, ISNULL(D.DisplayName, '') AS DeptName
, dbo.uf_HasChildDept(D.DeptCode) AS HasSubDept
, D.DeptEmail
, C.CompanyCode
, C.CompanyName
FROM dbo.tb_Dept D WITH (NOLOCK)
INNER JOIN dbo.tb_Company C WITH (NOLOCK)
ON C.CompanyCode = @companyCode
WHERE D.ParentDeptCode = @parentDeptCode
AND D.DisplayYN = 'Y'
AND c.CompanyCode = d.CompanyCode
ORDER BY D.SortOrder
END
【问题讨论】:
-
在您的示例中,您使用的是部门名称“TestIT”,但根据您的示例数据,“TestIT”是一家公司。
标签: sql-server tsql if-statement select join