小编use*_*933的帖子

加入CTE时出现SQL Server语法错误

我正在使用SQL Server 2014,我在下面的SQL查询时遇到问题.似乎某处存在语法错误,但我找不到它.

我正在从两个单独的视图中加入两个选择查询,即ReservationListARACCOUNT.

USE MyDatabase

;WITH q1 AS (
    select * 
    from ReservationList
    WHERE [Market Segment Code] <> 'COMP' AND 
    NOT (Status] = 'CANCELED' OR [Status] = 'NOSHOW' OR [Status] = 'WAITLIST') AND 
    NOT [Departure Date] < '2014-07-01' AND 
    NOT [Market Segment Code] = 'COMP' AND 
    NOT [Arrival Date] = [Departure Date]
)a

q2 AS (
    SELECT 
        [PMSConfirmationNumber],
        [FOC ACCOUNT],
        [AR ACCOUNT NAME]
    FROM 
        ARACCOUNT
)b

Select 
    q1.* 
from 
    q1
    JOIN q2 ON q1.PmsConfirmatioNnumber = …
Run Code Online (Sandbox Code Playgroud)

sql sql-server select join syntax-error

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

去年同日期的SQL语法

我正在使用SQL Server 2014,我有以下T-SQL查询从视图表中提取数据:

SELECT * from MyView

WHERE StayDate >= '2014-07-01'
Run Code Online (Sandbox Code Playgroud)

我需要为此查询添加一个过滤器,该过滤器将应用于名为"CreatedOn"的字段(它是datetime字段).过滤器需要根据上一年的相同日期过滤"CreatedOn".

因此,如果今天的日期是'2015-10-26',我的查询应该是这样的:

SELECT * from MyView

WHERE StayDate >= '2014-07-01'

AND CreatedOn <= '2014-10-26'
Run Code Online (Sandbox Code Playgroud)

由于此查询将在PowerPivot环境中使用,我正在考虑以下几点:

SELECT * from MyView

WHERE StayDate >= '2014-07-01'

AND CreatedOn <= getdate()
Run Code Online (Sandbox Code Playgroud)

如何修改getdate()部分,使其成为去年的相同日期?

t-sql sql-server date

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

如何按自定义顺序对T-SQL查询输出进行排序?

我在用SQL Server 2014.我需要将T-SQL查询的输出按特定顺序排序.

我尝试过以下但是没有按照我的意图工作.以下是我T-SQL查询的最后一部分的摘录:

...  
GROUP BY xx.[Market]

ORDER BY CASE
WHEN xx.[Market] = 'France' THEN '1'
WHEN xx.[Market] = 'United Kingdom' THEN '2'
WHEN xx.[Market] = 'Germany' THEN '3'
WHEN xx.[Market] = 'Belgium' THEN '4'
WHEN xx.[Market] = 'Reunion' THEN '5'
WHEN xx.[Market] = 'South Africa' THEN '6'
WHEN xx.[Market] = 'Russia' THEN '7'
WHEN xx.[Market] = 'Middle East' THEN '8'
WHEN xx.[Market] = 'Central Europe' THEN '9'
WHEN xx.[Market] = 'Poland' THEN …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server sql-order-by

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

使用此特定过滤器时,我的T-SQL查询可能导致输出不一致的原因是什么?

我正在使用SSMS,我有以下T-SQL查询:

USE MyDatabase

SELECT
...
FROM VIEW1

WHERE [ArrivalDate] BETWEEN '2015-01-01' AND '2018-11-30'
AND ([Reason For Stay] = 'SINGL' AND [Total Guest] = 2 AND [Sum of Child] = 0)
AND [Booking type] = 'FIT'
Run Code Online (Sandbox Code Playgroud)

以上查询输出250条记录.

在查询末尾添加以下过滤器输出30条记录:

AND [Title] = 'MR&MRS'
Run Code Online (Sandbox Code Playgroud)

当我将上面的过滤器更改为:

AND [Title] <> 'MR&MRS'
Run Code Online (Sandbox Code Playgroud)

我期待得到220条记录(这是显而易见的),但查询输出188条记录!

在"消息"标签下SSMS,我得到以下内容:

警告:聚合或其他SET操作消除了空值.

这可能会发生什么?如何更正我的T-SQL查询以获得220条记录?

sql t-sql sql-server

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

如何更改 T-SQL 查询中的行号行为?

我正在使用 SQL Server 2014 并且我有以下针对表 (tbl1) 运行的 T-SQL 查询。

tbl1 的摘录:

emp_code     Name     Address   Company
---------------------------------------
100          Peter    London     ABC
125          Allan    Cambridge  DCE
125          Allan    Cambridge  DCE
115          John     Suffolk    ABC
115          John     Suffolk    XYZ
154          Mary     Highlands  ABC
154          Mary     Bristol    ABC
124          Mary     Chester    ABC
Run Code Online (Sandbox Code Playgroud)

我的 T-SQL 查询如下:

SELECT
    [ID],
    [Name],
    [Address],
    [Company],
    ROW_NUMBER() OVER (PARTITION BY [emp_code] ORDER BY [Address]) AS RowNumber
FROM
    [tbl1]
Run Code Online (Sandbox Code Playgroud)

上述查询的输出:

emp_code         Name     Address   Company    RowNumber
--------------------------------------------------------
    100          Peter    London     ABC          1 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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

为什么我的SQL UPDATE语法给出“模棱两可的列名”?

我正在使用SQL Server 2014,并且正在运行以下UPDATE查询:

UPDATE ReservationStay 

SET ReasonForstayCode = b.ReasonForStayCode

FROM MissingReasonForStay b

WHERE ReservationStayID = b.ReservationStayID
Run Code Online (Sandbox Code Playgroud)

该查询的目的是使用“ MissingReasonForStay”表中的数据更新“ ReservationStay”表中名为“ ReasonForStayCode”的列。查找需要使用两个表的“ ReservationStayID”列来完成。

问题是SSMS在代码的第4行下划线显示了ReservationStayID,并且当我运行查询时,我收到一条消息:列名“ ReservationStayID”不明确

我的代码有什么问题?

sql-server ambiguous sql-update

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

为什么我的T-SQL查询中的CASE语句不能正常工作?

我正在运行以下T-SQL代码,SSMS但我没有得到关于查询中最后一列的结果:

 SELECT *, 
           (CASE WHEN Description like '%AI% '
                 THEN 'AI'
                   ELSE 'OTHER'
                     END) as 'Meal Plan'
 FROM TestTable
Run Code Online (Sandbox Code Playgroud)

TestTable的"描述"列是一nvarchar列.该列中的值的示例将是"STD AI REVENUE".

从上面的查询中,如果Description列中的相应值是'STD AI REVENUE',我希望'Meal Plan'列的值为'AI'.但是,我的查询是用'OTHER'填写整个'膳食计划'列.

谢谢你的帮助!

t-sql sql-server case sql-like

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

在没有嵌套的情况下,从每日日期维度表中仅提取第一天的日期

我正在使用SQL Server 2014,我有以下T-SQL查询,它从Date Dimension表中检索每月第一天的日期(基于我的过滤器):

SELECT * FROM (
    SELECT DATEADD(month, DATEDIFF(month, 0, [date]), 0) AS [Date2]
    FROM DateDimension
    WHERE [date] BETWEEN '2018-07-01' AND '2019-06-01'
) x
GROUP BY x.[Date2]
Run Code Online (Sandbox Code Playgroud)

输出如下:

Date2
2018-07-01 00:00:00.000
2018-08-01 00:00:00.000
2018-09-01 00:00:00.000
2018-10-01 00:00:00.000
2018-11-01 00:00:00.000
2018-12-01 00:00:00.000
2019-01-01 00:00:00.000
2019-02-01 00:00:00.000
2019-03-01 00:00:00.000
2019-04-01 00:00:00.000
2019-05-01 00:00:00.000
2019-06-01 00:00:00.000
Run Code Online (Sandbox Code Playgroud)

我使用嵌套查询来实现这一点.我的问题是我是否可以在不使用嵌套查询的情况下获得相同的结果.我的Date Dimension桌子是一张每日日期的桌子.

sql t-sql sql-server group-by date

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

如何复制SQL表中的列?

我正在使用,SQL Server 2014并且有一个table命名Table1。假设我想将命名SubCategory为“ column”的列复制到名为“ column” SubCategory2(具有与column 相同的值SubCategory)的新列中,该SQL syntax怎么做?

注意:此处的想法是保留列,Subcategory但创建另一个列,SubCategory2并在该新列中修改一些特定值。

示例(假设表1只有两列):

Serial  Subcategory
  1        UK
  2        UK
  3        FR
  4        DE
Run Code Online (Sandbox Code Playgroud)

预期产量:

Serial  Subcategory  Subcategory2
  1        UK           UK
  2        UK           UK
  3        FR           FR
  4        DE           DE
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

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