Table1有一个名为umsg的nvarchar列,它包含unicode文本,也有一些时间也是英文.
我想找出umsg专栏中的英文文本.
select *
from table1
where
RDate >='01/01/2014' and RDate < '09/26/2017'
and umsg = convert(varchar(max), umsg)
Run Code Online (Sandbox Code Playgroud)
我使用上面的查询,在区域语言中工作正常,但有些时候失败.假设col包含'refnoété'这样的文本我认为上面的消息是unicode,如果我使用上面的查询,它/ sql显示我是英文而不是unicode.如何处理这个.
Table :
Id Date Umsg
1 2017-09-12 00:00:00.000 The livers detoxification processes.
2 2017-09-11 00:00:00.000 Purposely added 1
3 2017-09-10 00:00:00.000 ??????? ?? ????-???? ????? ?? ?? ???? ?? ???????? ?? ????? ?? ??? ????
4 2017-09-17 00:00:00.000 ???? ?? ?????? ?????? ??? ???? ??? ??? ??? ???? ?? ????? ?? ??? ???? ?
5 2017-09-17 00:00:00.000 ref no été …Run Code Online (Sandbox Code Playgroud) 我正在使用RDL文件和存储过程来制作报告。RDL文件名是test.rdl,我有四个(4)存储过程连接到此test.rdl文件。因此该文件将具有四个数据集。
test.rdl
这些存储过程中的每一个都有具有相同名称(#temp)的临时表。
create table #temp(
ID int,
Name varchar(max),
Location varchar(max)
)
insert into #temp
select * from anothertable where date between '20171001' and '20171031'
Run Code Online (Sandbox Code Playgroud)
一些额外的查询以获得所需的结果,然后最终删除临时表。
select . . . . . . . . . .
drop table #temp
Run Code Online (Sandbox Code Playgroud)
因此,这四个存储过程都具有使用一个名称(#temp)的临时表。
所以我的问题是,当运行RDL测试文件并且一次调用所有四个(4)存储过程时,此方法是否可以正常工作?我关心的是#temp表,所有四个存储过程在运行结束时都有drop table #temp。这会否在运行时影响临时表的填充,因为其中一个存储过程可能在另一个表正在运行时以drop table完成,从而导致查询取消或结果不完整?
能不能请解释一下。我希望这是一个有效的问题。
t-sql sql-server stored-procedures reporting-services sql-server-2012
我试图找到SQL命令做某事但我不知道如何解释它所以我将使用一个例子.我有一张像这样的桌子:
| one | two | three | four |
|-----|-----|-------|------|
| a | h | i | j |
| b | k | l | |
| c | m | n | o |
| d | p | | |
| e | q | | |
| f | r | s | |
| g | t | | |
Run Code Online (Sandbox Code Playgroud)
我需要创建新的列,从右侧获取第一个非空列,并将其反向上升并加入/连接字段.
| one | 1-up | 2-up | 3-up |
|-----|------|------|---------|
| a | …Run Code Online (Sandbox Code Playgroud) 我在这个问题上绞尽脑汁.我有一系列广告系列及其相关的开始和结束日期.我正在尝试编写一个查询来列出2017年开始日期和结束日期之间至少有一天的广告系列.我原来的想法只是使用datepart():
datepart(yyyy,StartDt = 2017) OR datepart(yyyy,EndDt = 2017)
Run Code Online (Sandbox Code Playgroud)
但是,它不会接受2017年之前开始并在2017年之后结束的广告系列,例如开始日期2016年1月1日和结束日期1/1/2018.
我试图获得TotalPrice的总和,但抛出一个错误:
列 'Invoices.ServicePrice'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中.
ALTER PROCEDURE [dbo].[SalesReport]
@FromDate date= '11-May-2018',
@ToDate date= '05-Jun-2018'
AS
BEGIN
Set @ToDate= case when @ToDate IS NULL then Convert(varchar(11), getdate(), 106) else @ToDate end
Select ROW_NUMBER() over (partition by b.BookingID order by b.BookingID) as ID, inv.InvoiceNo,
convert(varchar(11),inv.EntryDateTime,106) as EntryDateTime, Count(s.ServiceID) as TotalServices,
SUM(inv.ServicePrice) as TotalPrice, SUM(inv.ServicePrice) over() as TotalRevenue
from Invoices inv
Inner Join Bookings b
ON b.BookingID= inv.fk_BookingID
Inner Join ZahidCarWashDB.dbo.Services s
ON s.ServiceID= inv.fk_ServiceID
where Convert(varchar(11), inv.EntryDateTime, 106) between @FromDate and @ToDate
group …Run Code Online (Sandbox Code Playgroud) 我有一个表,其中一些列名为number
Table1 (id, 2014, 2015, 2016)
Run Code Online (Sandbox Code Playgroud)
当我尝试访问where存储过程中的子句中的这些列时,我收到错误
'.2014'附近的语法不正确.
这是存储过程的代码:
select @SiteNumOfItems = COUNT(*)
from form.ItemStore I
where I.id = @id and I.2014 = 'Item1'
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
我有一个日期时间列的表信息begindate.
我尝试了以下2个SQL语句:
select *
from info
where begindate > '06/30/2018'
select *
from info
where convert(varchar, begindate, 101) > '06/30/2018'
Run Code Online (Sandbox Code Playgroud)
第一个查询结果是正确的,但第二个查询结果错误地包括那些迟于'06/30/2017'的结果.
谁能告诉我这是什么原因?有关于它的在线资源吗?谢谢
我有一个海量数据文件(制表符分隔).我正在经历数据转换 - 在某些时候,日期字段将填充非日期值(来自描述字段的单词左侧).你可以想象,我不能只是滚动文本文件,或者把它放到excel中去挖掘 - 我需要知道在哪里看.
我正在尝试向导入的表添加行号,以便我可以识别发生数据移位的行.所以,我想知道是否有办法插入行号而不必按任何顺序排序(即基本上编号原始数据文件的行).
运用
ROW_Number()OVER(ORDER BY(___))
我不确定如何完成我正在尝试做的事情,因为我无法订购任何东西 - 它需要完全按照导入进行编号.
我在SQL服务器中有一个表如下所示:
Machine Time Parts
A 2018-12-11 00:00 12
A 2018-12-11 01:00 38
A 2018-12-11 02:00 52
.....
A 2018-12-11 23:00 13
A 2018-12-12 00:00 45
A 2018-12-12 01:00 35
.....
A 2019-01-10 22:00 25
A 2019-01-10 23:00 68
A 2019-01-11 00:00 29
A 2019-01-11 01:00 36
A 2019-01-11 02:00 19
A 2019-01-11 03:00 52
.....
Run Code Online (Sandbox Code Playgroud)
机器生产的零件数量每小时存储在表格中.我需要的是一个查询,它在2018年12月11日00:00到2019年1月11日00:00之间获取所有数据,计算每天的部分总和并返回所有31个总和值.
我一直试图解决这个问题几天但由于我的SQL技能仍然很弱,因此无法解决这个问题.任何帮助,将不胜感激.
我建议使用以下存储过程来审核登录表.
CREATE PROCEDURE ApplicationLogin
@Username NVARCHAR(255),
@IpAddress NVARCHAR(255)
AS
BEGIN
DECLARE @UserID INT;
BEGIN TRANSACTION;
SET @UserID = (SELECT UserID FROM User WHERE Username = @Username);
IF @UserID > 0
BEGIN
UPDATE User
SET LastLogin = GETDATE()
WHERE UserID = @UserID;
END
INSERT INTO UserLogger (Username, UserID, TimeStamp)
VALUES (@Username, @UserID, @Timestamp);
COMMIT TRANSACTION;
SELECT @UserID
END
Run Code Online (Sandbox Code Playgroud)
但是我无法让它解决一些我无法弄清楚的语法错误.
该User表如下所示:
CREATE TABLE [dbo].[User]
(
[UserID] [INT] IDENTITY(1,1) NOT NULL,
[UserName] [VARCHAR](50) NOT NULL,
[Enabled] [BIT] NOT NULL,
[LastLogin] [TIMESTAMP] …Run Code Online (Sandbox Code Playgroud)