小编Dev*_*art的帖子

如何选择具有一个活动但没有另一个活动的货件

表的简化版本

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),其他装运相关列)

谢谢.

sql t-sql sql-server sql-server-2005

2
推荐指数
1
解决办法
55
查看次数

转换为datetime - DateTime列,其中包含日期和nvarchar列以及时间

我有一个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作为日期时间对象.提前致谢.

sql sql-server sql-server-2005

2
推荐指数
1
解决办法
105
查看次数

如果检查sql if语句接连不断

我正在使用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 sql-server

2
推荐指数
1
解决办法
87
查看次数

在存储过程中使用动态sql中的临时表

我正在 SQL Server 2012 中编写存储过程。我有一个像这样定义的临时表:

  DECLARE @CURRENT_RET_WEEK_PTIMEIDS TABLE ( PTIMEID INT )
Run Code Online (Sandbox Code Playgroud)

我还EXECUTE用来编写动态 SQL 查询。有什么办法可以将此表加入上述临时表吗?

sql-server stored-procedures dynamic-sql sql-server-2012

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

如何才能真正加入示例?

我有以下查询,但没有给出预期的结果:

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)

sql-server join self-join outer-join sql-server-2008

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

如何在MS SQL Server上创建查询或存储过程以从行扩展列

在编写此查询时需要您的帮助.

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-server stored-procedures sql-server-2008

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

在"单行"中为多个列选择不同的值

我有一个名为"计算"的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)

sql t-sql sql-server sql-server-2008

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

SubSelect上带有MILLISECONDS的SQL DATEDIFF

我不知道为什么你不能使用DATEDIFFMILLISECONDS在子查询中.

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中使用.

sql t-sql sql-server

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

如何在sql server中使用带有OR子句的IF EXISTS语句

我们需要建立一个script这将insert只有新created officesdistrictsData table.我们需要检查两者OfficeDistrict 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了这一点.如何实现上述场景?

sql t-sql sql-server

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

返回与我的Where匹配的列

可以说我有这个测试表:

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,然后只从列Nr1Nr7具有8.

结果应该是:

AdrNr  Nr3
500    8
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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