sql-server - 需要帮助编写复杂的 sql 查询

标签 sql-server

CREATE TABLE #tmpTableA
(
    [Id] [int] NOT NULL,
    RegionId INT,
    DistrictId INT,
    NurseryDays INT,
    TransplantDays INT     
 )

INSERT #tmpTableA ([Id], RegionId,DistrictId,NurseryDays,TransplantDays) VALUES (1,1,NULL,2,2) 
INSERT #tmpTableA ([Id], RegionId,DistrictId,NurseryDays,TransplantDays) VALUES (2,1,2,NULL,2) 

示例代码的输出是,

Id  RegionId    DistrictId     NurseryDays         TransplantDays
2     1            2               NULL              2
1     1            NULL             2                2

我想要的结果是, 1.)如果 RegionId 和 DistrictId 存在,则获取此组合的移植天数,否则获取 RegionId 和 DistrictId(NULL) 的移植天数。

2.) 如果 RegionId 和 DistrictId 存在,则获取此组合的 Nursery days,否则获取 RegionId 和 DistrictId (NULL) 的 Nursery days。

期望的结果:

NurseryDays        TransplantDays
 2                      2

这在单个查询中可能吗?

感谢和问候, 费萨尔·纳西尔

最佳答案

您对结果的描述与实际结果不符。如果您需要从您的数据中获取 regionid 和 districtid 的育儿日,这应该为空。

您将需要如图所示创建存储过程以获得结果。

create PROCEDURE ProcGetDays 
    @regionid int
AS
BEGIN

    SET NOCOUNT ON;
declare @nurserydays int
declare @transplantdays int

select @transplantdays = transplantdays from tmpTableA where regionid=@regionid and districtid is not null
if @transplantdays is null
    select @transplantdays = transplantdays from tmpTableA where regionid=@regionid

select @nurserydays=nurserydays from tmpTableA where regionid=@regionid and districtid is not null
if @nurserydays is null
    select @nurserydays=nurserydays from tmpTableA where regionid=@regionid

select @nurserydays as nurserydays,@transplantdays as transplantdays


END
GO

如果您需要使用临时表,您需要在存储过程中创建它以使其仍然可用。在示例中,我使用了一个永久表。

结束 开始

关于sql-server - 需要帮助编写复杂的 sql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14676344/

相关文章:

sql-server - 有没有办法在 django 中使用 GUID?

sql - FORMAT() 不是内置函数

sql - 增加 SQL Server 中的 NVARCHAR 列大小会导致索引重建吗?

sql-server - 存储过程是否锁定表/行?

SQL - 创建表时,如何在另一列满足特定要求时使其成为必需列?

c# - 存储过程的返回值仅在 ASP.NET 中获取第一个字符

sql - sysdate和getdate()的常用sql是什么

sql - 使用 IF/ELSE 并插入临时表

sql - 在 XML 数据类型中存储特殊字符(例如 &)

sql - 创建更新过程时出错