小编Rob*_*ley的帖子

相关子查询 SQL Server 2014

我(未成功)在 Invoices 表上使用相关子查询:

Invoices(InvoiceID,  VendorID, InvoiceTotal, PaymentTotal, CreditTotal,.... ),
Run Code Online (Sandbox Code Playgroud)

找到所有供应商的最大未付发票的总和,其中未付条件由下式给出InvoiceTotal-PaymentTotal-CreditTotal <0

 Select Sum(LargestUnpaid) from 
 (Select   Max(InvoiceTotal) AS LargestUnpaid from Invoices 
  where InvoiceTotal-(PaymentTotal+CreditTotal)<0 group by vendorID ) ;
Run Code Online (Sandbox Code Playgroud)

内部查询运行,有好有坏,因为查询应该是相关的,但查询作为一个整体没有运行,我收到错误消息:

Msg 102, Level 15, State 1, Line 4 Incorrect syntax near ')'.
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

sql-server subquery

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

Azure 数据仓库 - 用户定义的函数问题

这里有没有人在Azure 数据仓库数据库上创建和使用 UDF 很幸运?我正在将本地仓库从 SQL Server 2014 迁移到 Azure 数据仓库,但遇到了 UDF 问题。

CREATE FUNCTION dbo.fn_GetImpliedRate (@Multiple float, @term int)
RETURNS float
AS
BEGIN
    DECLARE @ImpInt float
    IF(@Term = 1)
        SET @ImpInt = (select [1] from  dbo.ImpliedRate where Multiple = @Multiple); 
    IF(@Term = 2)
        SET @ImpInt = (select [2] from  dbo.ImpliedRate where Multiple = @Multiple); 
    IF(@Term = 3)
        SET @ImpInt = (select [3] from  dbo.ImpliedRate where Multiple = @Multiple); 
    IF(@Term = 4)
        SET @ImpInt = (select [4] from  dbo.ImpliedRate …
Run Code Online (Sandbox Code Playgroud)

sql-server etl functions azure-sql-data-warehouse

7
推荐指数
2
解决办法
5021
查看次数

令人困惑的查询:混合聚合和非聚合

希望有人能澄清如何从 SQL Server 2012 中执行此查询,或者它可能在问什么;似乎我被要求做一个将聚合与非聚合相结合的查询,这导致了一个看似不可能的查询,因为一个人只能按出现在Select子句中的字段进行分组,这会使查询变得混乱。

我被要求对表进行查询Invoices

Invoices (InvoiceID, VendorID,InvoiceDate, InvoiceTotal,...)
Run Code Online (Sandbox Code Playgroud)

我被要求执行一个生成 6 列的查询:3 列已经“按原样”出现在表中: VendorID, InvoiceDate, InvoiceTotal

其他 3 列是聚合:

4) Sum(InvoiceTotal) AS VendorTotal: 每个发票的总和VendorID

5) Count(InvoiceID) AS VendorCount: 每个发票的数量VendorId

6) Avg(InvoiceTotal) AS VendorAvg: 平均每张发票VendorId


现在,问题是不能在同一个查询中组合(除了我不能在这里使用的例外)聚合和非聚合,除非按非聚合分组。所以我可以这样做:

Select 
    VendorId, InvoiceDate, InvoiceTotal, 
    Sum(InvoiceTotal) AS VendorTotal, 
    Count(InvoiceId) AS VendorCount, 
    Avg(InvoiceTotal) AS VendorAvg 
GROUP BY
    VendorID 
Run Code Online (Sandbox Code Playgroud)

现在,如果我只是group by VendorID. 但是为了获得有效的查询,如果我选择其中一个InvoiceDateInvoiceTotal——两个非聚合——我必须按它们中的每一个分组以获得有效的查询。

但是按这最后两个分组基本上会撤消其他聚合:如果我按发票日期分组,我将丢失按供应商的聚合,因为每个供应商都有不同的发票日期。

我尝试过进行自联接,在 中使用Invoices AS I1 join Invoices …

sql-server sql-server-2012

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