我試圖讓下面的查詢作業,但努力讓 PIVOT 函式正常作業,通常會出現語法錯誤或多邊界錯誤,具體取決于我的結構。我對 PIVOT 運算子完全陌生,所以我不確定如何解決這個問題。現在月份/期間像下面的示例資料一樣垂直拉動,我試圖將此期間/月份欄位 (fpr) 作為水平列。
| 電腦 | fpr | 引領 | 全部的 |
|---|---|---|---|
| 144 | 1 | 5-325 | 2442 美元 |
| 144 | 1 | 6-522 | 56757 美元 |
| 144 | 2 | 5-325 | 4355 美元 |
SELECT t.com,
t.fy,
t.ledg,
b.pl,
b.desc,
ISNULL(SUM(t.Debit_$ - t.Credit_$),0) AS Total_$
FROM (SELECT com,
fy,
fpr,
ledg,
CASE WHEN dc = 1 THEN amt_1 ELSE 0 END AS Debit_$,
CASE WHEN dc = 2 THEN amt_1 ELSE 0 END AS Credit_$
FROM dbo.mas31) AS t
LEFT JOIN dbo.sam13 AS b ON t.ledg = b.ledg
AND t.com = b.com)
PIVOT (SUM(Total_$)
FOR fpr IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) AS pt
uj5u.com熱心網友回復:
在源查詢中計算總計。
并且只選擇源查詢中將由資料透視表聚合的欄位。
(未經測驗的記事本涂鴉)
SELECT *
FROM (
SELECT m.com, m.fy, m.ledg, s.pl, s.[desc], m.fpr
-- debet - credit = total
, (IIF(m.dc=1, m.amt_1, 0) - IIF(m.dc=2, m.amt_1, 0)) AS [Total_$]
FROM dbo.mas31 AS m
LEFT JOIN dbo.sam13 AS s
ON s.ledg = m.ledg
AND s.com = m.com
) AS Src
PIVOT (
SUM([Total_$])
FOR fpr IN ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])
) AS Pvt
uj5u.com熱心網友回復:
就像提到的其中一條評論一樣,條件聚合非常易于閱讀/管理,而且如果您需要聚合多列,而不是像樞軸那樣僅按它們分組,則更靈活。
select
com,
led,
sum(case when fpr=1 then total end) as [1],
sum(case when fpr=2 then total end) as [2]
from (...) t
group by
com,
led
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/360901.html
標籤:sql sql-server 查询语句 枢
上一篇:T-SQL查詢空問題
