相关疑难解决方法(0)

有没有办法在不使用游标的情况下在TSQL中循环表变量?

假设我有以下简单的表变量:

declare @databases table
(
    DatabaseID    int,
    Name        varchar(15),   
    Server      varchar(15)
)
-- insert a bunch rows into @databases
Run Code Online (Sandbox Code Playgroud)

如果我想遍历行,是声明和使用游标我唯一的选择吗?还有另外一种方法吗?

t-sql sql-server loops

234
推荐指数
9
解决办法
61万
查看次数

If-Else条件在光标内

我当前的SQL语法是这样的

Declare CursorName CURSOR FOR
 Select Query
Run Code Online (Sandbox Code Playgroud)

现在,选择查询将包含If-Else条件.

If @Parameter1 is NULL
 BEGIN
  Select-Query1
 END
ELSE
 BEGIN
  Select-Query2
 END
Run Code Online (Sandbox Code Playgroud)

如何在SQL Server中的游标内写入第二个If-Else语句?

请帮忙!让我知道我的意见.!!


我的原始查询

Create Table #TempTable(PlanID BIGINT,PlanName NVARCHAR(50),InsuranceCompany Nvarchar(100),CurrentBalance DECIMAL(14,2),
                        [30DaysBalance] DECIMAL(14,2),[60DaysBalance] DECIMAL(14,2),[90DaysBalance] Decimal(14,2),
                        [120DaysBalance] DECIMAL(14,2),[150DaysBalance] Decimal(14,2),CurrentDaysPlanAmount DECIMAL(14,2),
                        [30DaysPlanAmount] DECIMAL(14,2),[60DaysPlanAmount] DECIMAL(14,2),[90DaysPlanAmount] Decimal(14,2),
                        [120DaysPlanAmount] DECIMAL(14,2),[150DaysPlanAmount] Decimal(14,2),StartDate DateTime,EndDate DateTime
                       )
Run Code Online (Sandbox Code Playgroud)

开始

    Declare @BillID BIGINT,@PatientID BIGINT,@BillDetailID BIGINT,@SendDt DateTime

    Declare Cursor_Claim_PlanAgingReport Cursor 

    For Select Bill.BillID,Bill.PatientID,BillDetail.BillDetailID,Claim.SendDt From Bill Inner Join
        BillDetail On Bill.BillID = BillDetail.BillID Inner Join
        Claim on Bill.BillID = Claim.BillID Left Outer Join …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2005 sql-server-2008

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

如何将n列连接成一列?

我的目标是,如果我有这个:

colmuns      c1 | c2 | c3 | c4 | c5 | n..
row1          a |  a |  a |  a |  a | 
row2          b |  b |  b |  b |  b |
rowN...
Run Code Online (Sandbox Code Playgroud)

我想做一个会返回的查询

   myCol
   aaaaa
   bbbbb
   nnnnn...
Run Code Online (Sandbox Code Playgroud)

我知道我能做到这一点

select t2.id, (
    select  *
    from mytable t1
    where t1.id= t2.id
    for xml path('')) as row
from mytable t2
Run Code Online (Sandbox Code Playgroud)

并且它会将包含许多列的整行放入我想要的一列中

现在,如何过滤掉xml标签?

或者还有其他解决方案吗?

编辑 列可能为null不是varchar,可以是int,varchar,date等

sql-server

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