表的简化版本
Table ActivityHistory:
ActivityHistoryid(PK) | ShipmentID | ActivityCode | Datetime
1 | 1 | CodeA |
2 | 1 | CodeB |
3 | 1 | CodeC |
4 | 2 | CodeA |
5 | 3 | CodeA |
6 | 3 | CodeB |
7 | 4 | CodeC |
Run Code Online (Sandbox Code Playgroud)
此表包含给定货件发生的活动列表.
任务:我需要选择有"CodeA"
和没有"CodeC"
活动的货件(货件ID).
在此示例中,货件ID 2和3将与条件匹配.
表装运:(装运ID(PK),其他装运相关列)
谢谢.
我有一个Date Date,它是Datetime类型.我有一个nvarchar列,里面有时间.例如:
Date(datetime) Time(nvarchar)
----------- ----------
2010-06-08 00:00:00.000 17:30
Run Code Online (Sandbox Code Playgroud)
我怎样才能将它们连接到2010-06-08 17:30:00.000作为日期时间对象.提前致谢.
我正在使用Microsoft SQL Server.
IF EXISTS (
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'ServerSettings'
AND COLUMN_NAME = 'MapIsAlwayCalcLenByWebServices'
)
IF (
SELECT MapIsAlwayCalcLenByWebServices
FROM ServerSettings
) = 0
UPDATE ServerSettings
SET MapCalculateDistanceSource = 0
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么这段代码会抛出错误"无效的列名".我认为第二次选择仅在第一次if为真时才执行.
我正在 SQL Server 2012 中编写存储过程。我有一个像这样定义的临时表:
DECLARE @CURRENT_RET_WEEK_PTIMEIDS TABLE ( PTIMEID INT )
Run Code Online (Sandbox Code Playgroud)
我还EXECUTE
用来编写动态 SQL 查询。有什么办法可以将此表加入上述临时表吗?
我有以下查询,但没有给出预期的结果:
SELECT "invoice"."ITEMNO",
"invoice"."Outgoing",
"storeage"."incoming"
FROM "MVXJDTAP"."MVXJDTA"."invoice"
INNER JOIN "MVXJDTAP"."MVXJDTA"."storeage "
ON "invoice"."ITEMNO" = "storeage"."itemno"
ORDER BY"storeage"."itemno"
Tables:
invoice
itemno Outgoing
ZOMV3-94 4
ZOMV3-94 7
storeage
itemno incoming
ZOMV3-94 3
ZOMV3-94 1
ZOMV3-94 60
ZOMV3-94 5
Run Code Online (Sandbox Code Playgroud)
查询给出了结果:
itemno outgoing incoming
ZOMV3-94 4 3
ZOMV3-94 4 1
ZOMV3-94 4 60
ZOMV3-94 4 5
ZOMV3-94 7 3
ZOMV3-94 7 1
ZOMV3-94 7 60
ZOMV3-94 7 5
Run Code Online (Sandbox Code Playgroud)
但我希望得到以下真实结果:
ZOMV3-94 4 NULL OR 0
ZOMV3-94 7 NULL OR 0
ZOMV3-94 NULL OR 0 3 …
Run Code Online (Sandbox Code Playgroud) 在编写此查询时需要您的帮助.
Field 1
========
Hello
Man
Lady
Run Code Online (Sandbox Code Playgroud)
我需要结果:
F1 F2 F3
=================================
Hello Null Null
Man Null Null
Lady Null Null
Hello Man Null
Hello Lady Null
Man Lady Null
Hello Man Lady
==================================
Run Code Online (Sandbox Code Playgroud) 我有一个名为"计算"的SQL表,如下所示:
id | InsulationMaterialId1 | InsulationMaterialId2| InsulationMaterialId3 | InsulationMaterialId4
-----------------------
1 | 34 | 45 | 34 | 50
2 | 34 | 78 | 35 | 51
3 | 35 | 32 | 34 | 52
4 | 36 | 30 | 34 | 53
5 | 40 | 39 | 34 | 34
6 | 41 | 34 | 34 | 56
7 | 42 | 36 | 34 | 53
Run Code Online (Sandbox Code Playgroud)
在这些表中,我们有4列带有绝缘ID,我希望在一个单独的列中使用','分隔的方式获得独特的绝缘ID输出如下: -
id | InsulationMaterialIds
-----------------------
1 …
Run Code Online (Sandbox Code Playgroud) 我不知道为什么你不能使用DATEDIFF
与MILLISECONDS
在子查询中.
SELECT *
FROM (
SELECT *
FROM vrghmdemo.dbo.xrmQueues
WHERE DATEDIFF(DAY, CreateDateTime, GETDATE()) < 2
) sub
WHERE DATEDIFF(MS, CreateDateTime, GETDATE()) < 500
Run Code Online (Sandbox Code Playgroud)
这导致(德语):
Meldung 535:Die datediff-FunktionführtezueinemÜberlauf.Die Anzahl von datepart-Werten,die zwei Datums-/Uhrzeitinstanzen trennen,istzugroß.
(英文对等):
日期函数导致溢出.分隔两个日期/时间实例的日期部分数量太大.尝试使用具有不太精确的日期部分的datediff.
如果我WHERE
再次在SubSelect之外使用相同的条件,它就可以工作.
SELECT *
FROM (
SELECT *
FROM vrghmdemo.dbo.xrmQueues
WHERE DATEDIFF(DAY, CreateDateTime, GETDATE()) < 2
) sub
WHERE DATEDIFF(DAY, CreateDateTime, GETDATE()) < 2
AND DATEDIFF(MS, CreateDateTime, GETDATE()) < 500
Run Code Online (Sandbox Code Playgroud)
为什么会这样?条件已在SubSelect中使用.
我们需要建立一个script
这将insert
只有新created
offices
和districts
成Data table
.我们需要检查两者Office
和District
tables
新的Records
,如果数据存在,我们需要insert
它们.
我们试过以下语法,
IF EXISTS (
SELECT 1
FROM [dbo].[office] o
LEFT OUTER JOIN [dbo].[Datatable] a ON (o.OfficeID = a.OfficeID)
WHERE a.OfficeID IS NULL
)
OR (
IF EXISTS (
SELECT 1
FROM [dbo].[District] o
LEFT OUTER JOIN [dbo].[Datatable] a ON (o.DistrictID = DistrictID)
WHERE a.DistrictID IS NULL
)
)
BEGIN
-- //CODE
END
Run Code Online (Sandbox Code Playgroud)
但SSMS给出syntax error
了这一点.如何实现上述场景?
可以说我有这个测试表:
CREATE TABLE Test (AdrNr INT, Nr1 INT, Nr2 INT, Nr3 INT, Nr4 INT, Nr5 INT, Nr6 INT, Nr7 INT)
INSERT INTO @t
VALUES (500, 3, 4, 8, 42, 5, 76, 91)
Run Code Online (Sandbox Code Playgroud)
现在我想知道任何Nr1..Nr7
列中是否有8 个:
SELECT *
FROM Test
WHERE 8 IN (Nr1, Nr2, Nr3, Nr4, Nr5, Nr6, Nr7);
Run Code Online (Sandbox Code Playgroud)
这工作得很好,但我的问题是,是否有可能得到的AdrNr
,然后只从列Nr1
到Nr7
具有8
.
结果应该是:
AdrNr Nr3
500 8
Run Code Online (Sandbox Code Playgroud)