小编Yoh*_*urg的帖子

CTE 的顶级联合错误

我正在尝试编写一个 CTE 查询,这对我来说可能是最高级的查询。(使用 SQL 已经 3 周了)。当我尝试运行此查询时,出现错误

消息 252,级别 16,状态 1,第 4 行递归公用表表达式“Sixer”不包含顶级 UNION ALL 运算符。

所以这里是瘦 - 我包括 DDL(这是巨大的)并且还说明 table Fiver 和 table first 看起来相同,但它们是不同的,因为 first 可能包含不存在于 Fiver 中的 acctNum,反之亦然。现在这里是 DDL

Create Table First
(
    Doctor  varchar(100)
    ,AcctNum varchar(10)
    ,ChargedAmt decimal(10,2)
    ,DOS date
)
Insert Into First (Doctor, AcctNum, ChargedAmt, DOS) VALUES
('Doctor A',    '912224661',    '1329', '1/31/2016'),
('Doctor A',    '912221628',    '12203',    '1/31/2015'),
('Doctor A',    '912219195',    '1096', '5/14/2014'),
('Doctor A',    '912224987',    '4195.42',  '2/29/2016'),
('Doctor A',    '912219200',    '11442.03', '5/16/2014'),
('Doctor A', …
Run Code Online (Sandbox Code Playgroud)

sql-server cte t-sql sql-server-2008-r2

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

获取一年的季度数据

我需要一种查询 SQL 表并按季度提取数据的方法。我知道 SQL Server 有一个DatePart()函数,它有一个参数,q = Quarter我想出了这个语法,但是对于一个包含大约 50,000 行的表,这个语法非常慢。这是实现此结果的最佳方法还是可以进行更多优化?

Declare @startdate date = '20170101', @enddate date = '20171231'
Select
Employeename
,[Total Amount Paid] = SUM(ISNULL(Totalcheckamt,0))
FROM dbo.PaymentHistory
WHERE DatePart(q,[DatePaid]) = 1
AND [DatePaid] BETWEEN CAST(DateAdd(yy, -1, @startdate) As Date) 
                   AND CAST(DateAdd(yy, -1, @enddate) As Date)
GROUP BY Employeename
Order By Employeename ASC
Run Code Online (Sandbox Code Playgroud)

编辑
我想要的返回结果是这样的

Employee Name -- Q1 ---   Q2 ---   Q3 ---    Q4
James           XXXXX.XX  XXXX.XX  XXXX.XX   XXXX.XX
Roger           XXXXX.XX  XXXX.XX  XXXX.XX   XXXX.XX
Run Code Online (Sandbox Code Playgroud)

编辑 …

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

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

使用 VARCHAR 计算

我正在尝试在 SQL Server 2008 R2 中进行计算,但我不断收到错误

消息 245,级别 16,状态 1,第 10
行将 varchar 值“.05”转换为数据类型 int 时转换失败。

更改表结构不是一种选择,有没有办法可以更改查询以便成功执行?

DECLARE @Test1 TABLE
(
  field1 VARCHAR(10),
  field2 INT
);

INSERT INTO @Test1 ( field1, field2 )
    VALUES ( '.05', 12 );

SELECT field1 / field2 
FROM @Test1;
Run Code Online (Sandbox Code Playgroud)

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

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