Tag: sql server 2005

SQL Server查询 – 用DISTINCTselectCOUNT(*)

在SQL Server 2005中,我有一个表cm_production,列出了所有已投入生产的代码。 该表有一个ticket_number,program_type和程序名和push_number连同其他一些列。 目标:按程序types和推送号码统计所有的DISTINCT程序名称 我到目前为止是: SELECT DISTINCT COUNT(*) AS Count, program_type AS [Type] FROM cm_production WHERE push_number=@push_number GROUP BY program_type 这让我在那里,但它计数所有的程序名称,而不是独特的(我不希望它在该查询中)。 我想我只是不能包装我的头如何告诉它只计算不同的程序名称,而不select它们。 或者其他的东西。

真实的例子,在SQL中何时使用OUTER / CROSS APPLY

我一直在和一位同事一起研究CROSS / OUTER APPLY ,我们正在努力寻找使用它们的真实例子。 我花了相当多的时间看我什么时候应该使用内部join交叉应用? 和谷歌search,但主要(唯一)的例子似乎很奇怪(使用表中的行数来确定从另一个表中select多less行)。 我认为这种情况可能会从OUTER APPLY受益: 联系人表(每个联系人包含1条logging)通讯条目表(每个联系人可包含n个电话,传真,电子邮件) 但是使用子查询,公用表expression式,带RANK()和OUTER APPLY OUTER JOIN似乎都是一样的。 我猜这意味着这种情况不适用于APPLY 。 请分享一些真实生活的例子,并帮助解释function!

SQL – 从行中减去耗尽的值

我有一种情况,我需要从一个表中获取“数量消耗”,并将其应用于具有一个或多个“批量”数量的行的第二个表。 我不确定如何更好地描述它,下面是我从表格的angular度来看: Table Pooled_Lots —————————- Id Pool Lot Quantity 1 1 1 5 2 1 2 10 3 1 3 4 4 2 1 7 5 3 1 1 6 3 2 5 Table Pool_Consumption —————————- Id PoolId QuantityConsumed 1 1 17 2 2 8 3 3 10 我需要一个SQL查询结果行集,看起来像这样: Pool Lot Quantity QuantityConsumed RunningQuantity RemainingDemand […]

SQL Serverrecursion查询

我是SQL Server开发新手。 我的大部分经验都是用Oracle完成的。 假设我有下面的表包含约会对象 CREATE TABLE [dbo].[Appointments]( [AppointmentID] [int] IDENTITY(1,1) NOT NULL, ……. [AppointmentDate] [datetime] NOT NULL, [PersonID] [int] NOT NULL, [PrevAppointmentID] [int] NULL, CONSTRAINT [PK_Appointments] PRIMARY KEY CLUSTERED ([AppointmentID] ASC) 约会可以推迟,所以当发生这种情况时,会在表上创build一个新的行,其中PrevAppointmentID字段包含原始约会的ID。 我想查询获取一个人约会的历史。 例如,如果ID = 1的任命推迟了两次,并且这些延期已经为同一个PersonID创build了ID = 7和ID = 12的约会,我想进行一个查询,返回以下结果: AppointmentID PrevAppointmentID —————– ———————- 1 NULL 7 1 12 7 如果使用Oracle,我记得使用CONNECT BY PRIOR子句可以得到类似这样的东西。 有没有什么办法来查询来实现这些结果? 我正在使用SQL […]

“select * from table”vs“select colA,colB,etc. from table”SQL Server 2005中有趣的行为

道歉一个冗长的职位,但我需要张贴一些代码来说明问题。 受问题启发* 不使用select的原因是什么? ,我决定指出一些我之前注意到的select *行为的一些观察。 所以让我们的代码自己说话: IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[starTest]') AND type in (N'U')) DROP TABLE [dbo].[starTest] CREATE TABLE [dbo].[starTest]( [id] [int] IDENTITY(1,1) NOT NULL, [A] [varchar](50) NULL, [B] [varchar](50) NULL, [C] [varchar](50) NULL ) ON [PRIMARY] GO insert into dbo.starTest(a,b,c) select 'a1','b1','c1' union all select 'a2','b2','c2' union all […]

对于Nvarchar(Max),我只能在TSQL中获得4000个字符?

这是SS 2005的。 为什么我只有4000个字符而不是8000个字符? 它在4000处截断string@SQL1。 ALTER PROCEDURE sp_AlloctionReport( @where NVARCHAR(1000), @alldate NVARCHAR(200), @alldateprevweek NVARCHAR(200)) AS DECLARE @SQL1 NVARCHAR(Max) SET @SQL1 = 'SELECT DISTINCT VenueInfo.VenueID, VenueInfo.VenueName, VenuePanels.PanelID, VenueInfo.CompanyName, VenuePanels.ProductCode, VenuePanels.MF, VenueInfo.Address1, VenueInfo.Address2, '' As AllocationDate, '' As AbbreviationCode, VenueInfo.Suburb, VenueInfo.Route, VenueInfo.ContactFirstName, VenueInfo.ContactLastName, VenueInfo.SuitableTime, VenueInfo.OldVenueName, VenueCategories.Category, VenueInfo.Phone, VenuePanels.Location, VenuePanels.Comment, [VenueCategories].[Category] + '' Allocations'' AS ReportHeader, ljs.AbbreviationCode AS PrevWeekCampaign […]

使用包含2个date参数的date填充临时表的最简单的方法

使用包含date参数和date参数的date填充临时表的最简单方法是什么? 我只需要在月份的第一天。 所以例如,如果@StartDate ='2011-01-01'和@EndDate ='2011-08-01' 然后我想要这个返回在表中 2011-01-01 2011-02-01 2011-03-01 2011-04-01 2011-05-01 2011-06-01 2011-07-01 2011-08-01

什么是最好的检查项目是否存在:select计数(ID)或存在(…)?

如果一个项目存在或不存在,特别是如果该表格包含超过700,000行,则performance最好的是什么? if (Select count(id) from Registeration where email='email@w.cn') > 0 print 'Exist' else print 'Not Exist' 要么 if Exists(Select id from Registeration where email='email@w.cn') print 'Exist' else print 'Not Exist'

从表中select行的最大date的信息

我的表看起来像这样: group date cash checks 1 1/1/2013 0 0 2 1/1/2013 0 800 1 1/3/2013 0 700 3 1/1/2013 0 600 1 1/2/2013 0 400 3 1/5/2013 0 200 – 不需要现金就可以显示表格中有更多信息 我想得到每个独特的组,其中date是最大的,并且检查是大于0.所以返回看起来像这样: group date checks 2 1/1/2013 800 1 1/3/2013 700 3 1/5/2013 200 尝试的代码: SELECT group,MAX(date),checks FROM table WHERE checks>0 GROUP BY group ORDER […]

SQL Server的枢轴与多重连接

在SQL Server 2005中使用什么更有效:PIVOT或MULTIPLE JOIN? 例如,我得到了这个查询使用两个连接: SELECT p.name, pc1.code as code1, pc2.code as code2 FROM product p INNER JOIN product_code pc1 ON p.product_id=pc1.product_id AND pc1.type=1 INNER JOIN product_code pc2 ON p.product_id=pc2.product_id AND pc2.type=2 我可以使用PIVOT做同样的事情: SELECT name, [1] as code1, [2] as code2 FROM ( SELECT p.name, pc.type, pc.code FROM product p INNER JOIN product_code pc ON […]