【问题标题】:SQL select query - display related records in onr columnSQL 选择查询 - 在一列中显示相关记录
【发布时间】:2012-01-30 20:39:51
【问题描述】:

我有这些桌子 我想要这样的结果

╭────────────┬────────────┬──────┬────────────────────────┬────────────────────────╮
│ InvoiceID  │    Date    │ Sum  │ SUM(RecietInvoice.Sum) │ RecietInvoice.RecietID │
├────────────┴────────────┴──────┴────────────────────────┴────────────────────────┤
│      1     │ 11/11/2010 │ 1200 │           1200         │        34,45           │
╰────────────┴────────────┴──────┴────────────────────────┴────────────────────────╯

在 RecietInvoice.RecietID 中,我想拥有这张发票的所有 RecietID。

【问题讨论】:

  • 看看i.imgur.com/goWIq.png 我想将第 29,30,31 行作为单行,RecietID 为“7,8,9”
  • 如果您在逗号分隔列表方面需要帮助,请尝试以下方法:stackoverflow.com/questions/3024456/…
  • 我想知道 10x 到底是什么意思。 (我想我得到的互联网络数量是 10 倍。)
  • 仅供参考,这个词拼写为“Receipt”,而不是“Reciet”
  • @JohnSaunders - 这也困扰着我 - 我不得不像他的例子一样拼写。

标签: sql-server reporting-services csv pivot


【解决方案1】:

这是一种方法(未经测试可能有错别字)

Select I.InvoiceID, I.Date, RI.Sum, 
   SUM(R.CashTotal) OVER(PARTITION BY  I.InvoiceID) 
     stuff( (SELECT ', '+CAST(RecietR2.RecietID as varchar(max))
             FROM  Reciet R2
             WHERE RecietR2.InvoiceID  = I.InvoiceID
             FOR XML PATH ('')
           ), 1, 2, '') as RecietIDs
FROM Invoice I
LEFT JOIN RecietInvoice RI ON I.InvoiceID = RI.InvoiceID
LEFT JOIN Reciet R ON RI.RecietID = R.RecietID

【讨论】:

  • Msg 156, Level 15, State 1, Line 6 关键字“ORDER”附近的语法不正确。
  • 听起来你的语法不正确......粘贴你所做的(也许 pastebin 是一个好地方)
  • @Kulpemovitz 好的,我看到一个错字,我没有演员表。我取出订单是因为谁在乎?试试这个版本。
猜你喜欢
  • 2020-12-03
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-10
相关资源
最近更新 更多