标签: sql-server-2012

Sql 分页的最佳方式

我有#temp 表,我需要对该表中的所有数据进行分页。表格分页的最佳方式是什么?

create table #temp (
    Id int
    ,SomeName nvarchar(100)
)

create table #tempPage (
    Id int
    ,SomeName nvarchar(100)
    ,PageIndex int
)
--Test data
insert #temp (Id, SomeName) values
(1,'A'),
(2,'B'),
(3,'C'),
(4,'D'),
(5,'F'),
(6,'G'),
(7,'H'),
(8,'A1'),
(9,'B1'),
(10,'C1'),
(11,'D1'),
(12,'F1'),
(13,'G1'),
(14,'H1');

--Page size
declare @PageSize int = 5

--Max page count
declare @MaxPages float = (
    select
        case when count(Id)%@PageSize>0 then count(Id)/@PageSize+1 else count(Id)/@PageSize end
    from #temp
)

declare @PageFrom int = 0

declare @CurrentPage int = 1 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql database sql-server sql-server-2012

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

SQL Server 用户定义函数给出错误

我在 SQL Server 中创建以下 UDF

CREATE Function [Fn_dd]
(@InputstartDate Date, @InputendDate Date)
returns @AllDates Table
    (AllDate Date)
As
Begin
    Declare @startDate date
    Declare @endDate date
    Declare @rDate date
    set @startDate  = @InputstartDate
    set @EndDate  = @InputendDate

    while (@startDate <=  @endDate)
    Begin
        insert into @AllDates values (@startDate )
        set @startDate = DATEADD(dd,1,@startDate)
    End
return
End
GO
Run Code Online (Sandbox Code Playgroud)

但是当我在数据中使用它时会出现错误

select
 dbo.Fn_dd('2020-01-02','2020-02-08')
from dbo.Txns
Run Code Online (Sandbox Code Playgroud)

错误信息

Cannot find either column "dbo" or the user-defined function or aggregate "dbo.Fn_dd", or the name is ambiguous.
Run Code Online (Sandbox Code Playgroud)

知道为什么吗?

sql sql-server sql-server-2012

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

将标识列值作为参数插入到其他列

我有一个名为 tab_stores 的表,它的结构如下所示

CREATE TABLE tab_stores
(
    id_num INT IDENTITY(1, 1),
    sName VARCHAR(20),
    mySKey VARCHAR(20)
);
Run Code Online (Sandbox Code Playgroud)

现在,当我使用下面的查询在此表中插入值时,它会插入值并增加id_num+1,这工作正常。

INSERT tab_stores (sName, mySKey)
VALUES ('Store', 'Store');
Run Code Online (Sandbox Code Playgroud)

插入的数据是

1,Store,Store
Run Code Online (Sandbox Code Playgroud)

我想稍微修改一下,以便当我插入行时,自动递增的列值应该被后固定并添加到mySKey列中,所以结果应该是

1,Store,Store1
Run Code Online (Sandbox Code Playgroud)

我尝试使用下面的查询,但它不起作用 - 我得到

消息 207,级别 16,状态 1,服务器 49706b09f367,第 7 行
无效的列名称“id_num”

INSERT tab_stores (sName, mySKey)
VALUES ('Store', 'Store' + id_num);
Run Code Online (Sandbox Code Playgroud)

谁能帮帮我吗?谢谢

t-sql sql-server identity insert sql-server-2012

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

比较两列中的值

我需要帮助返回查询中的值.考虑下面的示例,其中A列中的值链接到B列:

Column A             Column B
---------            ---------
45008                AQZ45008D
45008                ABC12345
45007                45007AX
45007                11652019
45007                JMD45007
Run Code Online (Sandbox Code Playgroud)

我只需要返回行A,其中列A中的值可以在B列的某处找到.因此,在此示例中,需要返回行1,3和5.

我希望这是一个明显的例子.谢谢你的帮助!

t-sql sql-server sql-server-2012 sql-like

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

GETDATE()不返回毫秒和分钟

我想这是一个简单的问题,但我需要帮助.

declare @Date date
SET   @Date =GETDATE()
print @date
Run Code Online (Sandbox Code Playgroud)

宣言给了我结果: 2013-08-04

但我还需要几毫秒和几分钟.

我怎么能做到这一点?

sql sql-server sql-server-2012

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

消除SQL中的重复数据

我正在使用SQL Server 2012,我有一个名为Employee的表,我试图获得结果

SrNo  | Name_of_Employee   |    Known_Technology    |   No_of_Times   
------+--------------------+------------------------+-----------------
    1 |  Mahesh Kumar      |        C#.net          |       2
      |                    |        SQL Server      |       3
      |                    |        ASP.NET         |       1
    2 |  John Dias         |        JAVA            |       2
      |                    |        VB.NET          |       1
      |                    |        Jquery          |       2
    3 |  Sijo Paul         |        Style Sheet     |       1
      |                    |        MySQL           |       2
    4 |  Nichol Sami       |        ASP.NET         |       3
      |                    |        JAVA            |       2
      |                    |        VB.NET          |       1 …

sql t-sql sql-server sql-server-2012

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

所有行都标记有一组特定的值

更具体地说,对于问题和标签之间的多对多关系作为sql server表(包括帮助表QuestionsWithTags),需要一个query/sp,它返回所有具有以下标记集"t1","t2"的问题. "和"t3".鉴别器没有任何标签,但所有这些标签都不少于此.

提前致谢.

sql sql-server sql-server-2008 sql-server-2012

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

将字符串列表传递给存储过程

我想使用SQL Server 2012创建一个存储过程,该存储过程传入​​一个字符串列表并检查每个条目。Iv将列表添加到一个逗号分隔的字符串'UserGroupsAllowedToViewMap'中。这适用于一个条目,但是我需要检查它是否包含多个条目。

public DataTable GetMapsWithWorkspaceForUserGroups(int workspaceID, string UserGroupsAllowedToViewMap)
{
        DataTable mapDets = new DataTable();

        SqlCommand oComm = new SqlCommand();
        SqlParameter spParam_WrkSpaceId = new SqlParameter();
        SqlParameter spParam_ViewMap = new SqlParameter();
        SqlParameter[] spParams = new SqlParameter[2];

        SqlDataAdapter daUserMaps = new SqlDataAdapter();
        try
        {
            spParam_WrkSpaceId.ParameterName = "@workspaceID";
            spParam_WrkSpaceId.Value = workspaceID;
            spParams[0] = spParam_WrkSpaceId;

            spParam_ViewMap.ParameterName = "@ViewMap";
            spParam_ViewMap.Value = UserGroupsAllowedToViewMap;
            spParams[1] = spParam_ViewMap;

            oComm = CreateCommand("GetWorkspaceMapDetailsForUserByGroups", spParams, TypeOfConnectionString.GeoAppBuilder);
            daUserMaps.SelectCommand = oComm;
            daUserMaps.Fill(mapDets);
        }
        catch (Exception e)
        {
            throw (e);
        }
        finally
        {
            CloseConnection(); …
Run Code Online (Sandbox Code Playgroud)

c# sql stored-procedures sql-server-2012

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

从SQL 2005迁移到2012年

这是我在SQLServer 2005中编写的存储过程.现在我们转向SQL2012并在我使用的地方收到大量错误*=.我知道我必须使用LEFT OUTER JOIN语法,但不知怎的,我很难过.有人可以帮帮我吗 ?我在where子句中使用ABS的位置也会出错.

These 2 lines in question in WHERE CLAUSE BELOW
currhold.current_hold__001 *= #tmp_transac.current_hold__001 and
((abs(t_quantity_c)> 0.01 and #tmp_transac.current_hold__001 is null) or
Run Code Online (Sandbox Code Playgroud)

完整的SP就在这里

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

ALTER PROCEDURE [dbo].[usp_getEPMData_GFS]
AS
  BEGIN
      SET NOCOUNT ON;

      IF OBJECT_ID('tempdb..#factortemp', 'u') IS NOT NULL
        BEGIN
            DROP TABLE #factortemp
        END

      IF OBJECT_ID('tempdb..#transactemp', 'u') IS NOT NULL
        BEGIN
            DROP TABLE #transactemp
        END

      SELECT *
      INTO   #transactemp
      FROM   transac
      WHERE  tran_type IN ( 'BUY', 'SHORT' …
Run Code Online (Sandbox Code Playgroud)

sql sql-server sql-server-2005 outer-join sql-server-2012

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

如何将NULL作为无效列的值

我正在使用Sql Server 2012.考虑表模式,

create table A (col1 int, col2 int)
Run Code Online (Sandbox Code Playgroud)

我正在尝试执行此查询,

select col1, col2, col3, col4 from A

我得到执行错误的col3col4不表.

但是有没有办法,这两列可以在结果中显示NULL为每行的值,即使它在表中不可用?

sql sql-server sql-server-2012 ssms-2012

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