相关疑难解决方法(0)

选择仅属于特定部门的用户

我有下表有两个字段,即a和b,如下所示:

create table employe
(
    empID varchar(10),
    department varchar(10)
);
Run Code Online (Sandbox Code Playgroud)

插入一些记录:

insert into employe values('A101','Z'),('A101','X'),('A101','Y'),('A102','Z'),('A102','X'),
             ('A103','Z'),('A103','Y'),('A104','X'),('A104','Y'),('A105','Z'),('A106','X');


select * from employe;
Run Code Online (Sandbox Code Playgroud)
empID   department
------------------
A101    Z
A101    X
A101    Y
A102    Z
A102    X
A103    Z
A103    Y
A104    X
A104    Y
A105    Z
A106    X
Run Code Online (Sandbox Code Playgroud)

注意:现在我想显示仅属于该部门Z且仅属于该部门的员工Y.因此,根据条件,A103应该显示唯一的员工,因为他只属于部门ZY.但员工A101不应该出现,因为他属于Z,X, and Y.

预期成果:

如果条件是:ZY则结果应该是:

empID
------
A103
Run Code Online (Sandbox Code Playgroud)

如果条件是:ZX则结果应该是:

empID
------ …
Run Code Online (Sandbox Code Playgroud)

sql sql-server postgresql sql-server-2008-r2

23
推荐指数
4
解决办法
2533
查看次数

在用户定义的函数中创建,删除和插入临时表

我正在尝试按照我的要求创建一个函数.

但是,当我创建或删除时#tempTable,它会给出一个错误:

在函数内无效使用副作用运算符'drop object'

我的理解是,我们不能有create,dropinsert在操作#temptable中的功能.

那是对的吗?

我的SQL:

CREATE FUNCTION [dbo].[RT_ResultFunction]
(
    Id VARCHAR(4000)
)
RETURNS @RT_ResultFunction TABLE 
(   
    Id VARCHAR(20)
    , Name varchar(20)
    ,Balance Int
)
AS
BEGIN
    IF OBJECT_ID('tempdb..#tempTable') IS NOT NULL  
       DROP TABLE #tempTable

    SELECT Id, COUNT(Balance) 
    INTO  #tempTable
    'Balance' FROM Table1

    INSERT  @RT_ResultFunction 
        SELECT T1.ID,T1,NAME,T2,Balance 
        FROM    Table2 T1, 
                #tempTable T2
        WHERE T1.ID = T2.ID

    RETURN
END
Run Code Online (Sandbox Code Playgroud)

sql-server function

7
推荐指数
1
解决办法
5万
查看次数

如何在T-SQL查询中不使用*符号查找给定数字的阶乘?

我使用*符号获得了阶乘值:

declare @given_number int=5;
declare @fact int=1;

while(@given_number > 1)
begin
    set @fact = @fact * @given_number;
    set @given_number = @given_number - 1;
end

select @fact as 'Factorial is '
Run Code Online (Sandbox Code Playgroud)

但是现在我希望在不使用*符号的情况下获得相同的阶乘值

提供正确的查询,请帮助我吗?

sql t-sql sql-server

1
推荐指数
2
解决办法
388
查看次数