您好我正在使用SQL SERVER 2008 R2,有人可以帮我生成一个脚本,如创建,更改,而不使用UI.
我正在创建一个电子邮件队列来处理电子邮件发送 从该队列中,我正在记录X个记录,并根据记录的类型字段发送电子邮件.
为此,我在存储过程中声明了一个表.当记录X个记录时,我将在EmailQ表中设置记录的状态 进行处理.但是在发送X号记录之后,现在在声明的表中必须删除.
为此我可以使用Delete但是有TRUNCATE删除表中的所有记录.但声明的表未标识为表.
WHILE EXISTS ( SELECT * FROM emailQ WHERE Status != 3)
BEGIN
CREATE PROCEDURE [dbo].[SendMails]
DECLARE @Temp TABLE (......)
--Declare all the necessary variables
INSERT INTO @Temp SELECT TOP 10
WITH (UPDLOCK, HOLDLOCK)
--Update the email queue table status of selected set of records in to the @Temp
DECLARE dataSet CURSOR FORWARD_ONLY FOR (SELECT....... FROM @Temp)
OPEN dataSet
FETCH NEXT FROM dataSet INTO...
WHILE @@FETCH_STATUS = 0 …Run Code Online (Sandbox Code Playgroud) 我需要一个sql服务器结果集"打破"列值,但如果我在排名函数中按此列排序,我真正需要的顺序就会丢失.最好用例子来解释.我目前正在尝试的查询是:
select RANK() over(partition by Symbol, Period order by TradeDate desc)
SymbSmaOverUnderGroup, Symbol, TradeDate, Period, Value, Low, LowMinusVal,
LMVSign
from #smasAndLow3
Run Code Online (Sandbox Code Playgroud)
它返回:
Rnk Symbol TradeDate Period Value Low LowMinusVal LMVSign
1 A 9/6/12 5 37.09 36.71 -.38 U
2 A 9/5/12 5 37.03 36.62 -.41 U
3 A 9/4/12 5 37.07 36.71 -.36 U
4 A 8/31/12 5 37.15 37.30 .15 O
5 A 8/30/12 5 37.22 37.40 .18 O
6 A 8/29/12 5 37.00 36.00 -1.00 U
7 A …Run Code Online (Sandbox Code Playgroud) 我正忙着编写一个声明提供程序类,用于安全令牌服务.
从SQL Server 2008 R2数据库读取用户权限:
SELECT A, B, C, ..., X FROM Permissions WHERE UserId = @UserId
Run Code Online (Sandbox Code Playgroud)
会给我一行,例如:
A B C ... X
1 0 1 1
Run Code Online (Sandbox Code Playgroud)
在表单中包含这些数据要容易得多
Permission Value
A 1
B 0
C 1
...
X 1
Run Code Online (Sandbox Code Playgroud)
由于实际表包含几十列,我宁愿能够"动态"进行转置,而无需手动输入任何列名.
感觉像PIVOT/UNPIVOT函数和INFORMATION_SCHEMA.COLUMNS视图是我需要的,但我不知道该怎么做.
查询的任何想法会这样做?
PS.我想如果push推进,我只是将结果集粘贴在DataTable中并迭代代码中的列以生成用户声明,但我想知道上述方法是否可行首先:)
可以和多个cte一起使用select吗?例如,在下面的代码中,将第一个cte cte_table的结果插入dbo.table1中,然后定义另一个cte。这可能吗?
WITH cte_table
AS
(
SELECT *
FROM dbo.table
)
INSERT INTO dbo.table1
SELECT *
FROM [cte_table]
, cte_table2
AS
(
SELECT *
FROM dbo.table2
)
Run Code Online (Sandbox Code Playgroud) 这是主表:
CREATE TABLE [dbo].[Control_cReport](
[ReportKey] [int] IDENTITY(10000,1) NOT NULL,
[ReportTechKey] [int] NOT NULL,
[ProcessKey] [int] NULL,
CONSTRAINT [PK_Control_cReport] PRIMARY KEY CLUSTERED
(
[ReportKey] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Control_cReport] WITH CHECK ADD CONSTRAINT [FK_Control_cReport_cReportTech] FOREIGN KEY([ReportTechKey])
REFERENCES [dbo].[Control_cReportTech] ([ReportTechKey])
GO
ALTER TABLE [dbo].[Control_cReport] CHECK CONSTRAINT [FK_Control_cReport_cReportTech]
GO
ALTER TABLE [dbo].[Control_cReport] ADD DEFAULT ((12)) FOR [ProcessKey]
GO
Run Code Online (Sandbox Code Playgroud)
这是次要表:
CREATE TABLE [dbo].[Control_cReportTech]( …Run Code Online (Sandbox Code Playgroud) 我有以下vb.net函数,它在sql命令文本中有一个语法错误,我似乎无法弄清楚
Private Sub addsupporderidsinbookedtoinprocess()
Try
Dim cnn3 As New SqlConnection(connetionString)
Dim sqlcmd3 As New SqlCommand("SELECT supporderidinprocess FROM ordersinprocess", cnn3)
sqlcmd3.CommandText = "INSERT INTO ordersinprocess(supporderidinprocess) VALUES(SELECT IDENT_CURRENT('[supporder]'))"
cnn3.Open()
sqlcmd3.ExecuteNonQuery()
sqlcmd3.Parameters.Clear()
cnn3.Close()
Catch ex As SqlException
MsgBox(ex.Message)
End Try
End Sub
Run Code Online (Sandbox Code Playgroud)
错误在这部分
...VALUES(SELECT IDENT_CURRENT('[supporder]'))
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
我有这个SQL查询
SELECT *
FROM ##tempt
WHERE ( minstock <= 0
AND numitems - backorder - cstock >= 1 )
OR ( minstock >= 1
AND numitems - backorder + minstock - cstock >= 1 )
Run Code Online (Sandbox Code Playgroud)
我如何检查值是否minstock为null,如果为null,则将其设置为某个数字?
我使用SQL Server 2008 R2作为数据库引擎.通过我的MSDN订阅,我可以使用SQL Server 2012进行开发.由于我注意到2012 SSMS中有一些很酷的东西,我的问题是,如果我只使用2012 SSMS并将2008 R2保留为数据库引擎,那么脚本的生成或任何其他效果会有什么不同吗?
谢谢.
更新1:哦,是的,我看到了这个页面:SQL Server数据库引擎向后兼容性,但它并不完全是我想要的.
如何计算两个字符之间的字母数(按字母顺序a到z或z到a)?
例如:
WITH ExampleData
AS ( SELECT 'a' AS StartChar, 'e' AS EndChar
UNION ALL
SELECT 'm', 'r'
UNION ALL
SELECT 'f', 'a'
)
SELECT StartChar ,
EndChar
FROM ExampleData
Run Code Online (Sandbox Code Playgroud)
需要生产:
StartChar EndChar Diff
a e 4
m r 5
f a -5
Run Code Online (Sandbox Code Playgroud)
我看到如何使用udf和while循环轻松完成,但我想知道是否有更快的方法?
sql-server ×7
sql ×6
t-sql ×4
isnull ×1
sqlcommand ×1
ssms ×1
temp-tables ×1
unpivot ×1
vb.net ×1
where ×1