小编Joy*_*rya的帖子

如何使用给定条件在一列中选择多行

员工表

Id      Name
-------------
1        Joy
2       Moni
3       Evan
4      farhad
Run Code Online (Sandbox Code Playgroud)

缺席表

Date(y/m/d)   Id
-----------------
2015/1/1      1
2015/1/3      1
2015/1/4      1
2015/1/5      1
2015/1/1      2
2015/1/4      2
2015/1/5      2
2015/1/5      3
Run Code Online (Sandbox Code Playgroud)

我需要来自上面两个表的数据,如下所示

Name              Date
Joy     2015/1/5, 2015/1/4, 2015/1/3    
Moni    2015/1/5, 2015/1/4
Evan    2015/1/5
Run Code Online (Sandbox Code Playgroud)

第1点:我不会约会,2015/1/1因为2015/1/2员工身份'1'的日期缺失日期表中的欢乐
点2:我不会把日期'2015/1/1',因为日期'2015/1/3'和'2015对于日期表中的moni,员工ID"2"缺少/ 1/2

我已经尝试过像这样的问题,这对我的问题很好,但它需要两倍的大数据执行时间.我怎么能以另一种方式做到这一点,以便我将获得最短的执行时间.

select a.Id,a.name , [dbo].[hello] ('2015/1/1','2015/1/5',a.Id)  From
Employee a

    ALTER FUNCTION [dbo].[hello](@start datetime,@End datetime,@Id int)
    returns varchar(1111)
AS

begin
declare
        @TempDate  DateTime,
        @CombainedDate  varchar(1111)= '',


        while(@End>=@start)

        begin


          select …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

6
推荐指数
1
解决办法
241
查看次数

为什么我们需要递归?

使用递归然后循环(for,while,do-while)有什么好处?

使用递归(这里我得到一个给定数字的总和,假设数字是5然后5 + 4 + 3 + 2 + 1:

   #include<stdio.h>
   int sum(int n);
   void main()
    {
     int sums =0, n;
     scanf("%d",&n);
     sums = sum(n);
     printf("%d",sums);

       while (1)
        {

        }
    }

  int sum(int n)
  {
     if (n==1)
     return 1;
     return n + sum(n-1);
  }
Run Code Online (Sandbox Code Playgroud)

没有递归(这里我得到一个给定数字的总和假设数字是5然后5 + 4 + 3 + 2 + 1:

  #include<stdio.h>

  void main()
   {
     int sum =0, n;
     scanf("%d",&n);
     for(int i=n;i>=1;i--)
      {
       sum = sum + i;
      }
      printf("%d",sum);

      while (1)
      {
      }
    }
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
941
查看次数

标签 统计

c ×1

sql ×1

sql-server ×1