我已经构建了这个查询:
SELECT *
FROM
(
SELECT [VendorCode], [VendorName],
year(CheckDate) as 'year',
left(datename(month,CheckDate),3) as [month],
[CheckSum] as 'Amount'
FROM ocho
WHERE [Canceled] ='N'
) as abc
PIVOT
(
SUM(Amount)
FOR [month] IN (jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec)
) AS sumpivot
我得到一张表,每个供应商不会总结为一行,每个供应商在12个月或更短时间内,取决于我们在支票中支付了多少个月。我试图把小组分成小组
vendorcode
和name
我失败了。
答案 0 :(得分:0)
我认为一切正常 -
的查询:强> 的
DECLARE @temp TABLE
(
VendorCode INT
, VendorName NVARCHAR(50)
, CheckDate DATETIME
, Canceled CHAR(1)
, [CheckSum] DECIMAL(10,2)
)
INSERT INTO @temp (VendorCode, VendorName, CheckDate, Canceled, [CheckSum])
VALUES
(1, '1', '20100101', 'N', 4),
(2, '2', '20100303', 'N', 2),
(2, '2', '20100601', 'N', 1),
(2, '2', '20100604', 'N', 99)
SELECT *
FROM
(
SELECT
[VendorCode]
, [VendorName]
, [year] = YEAR(CheckDate)
, [month] = LEFT(DATENAME(MONTH, CheckDate), 3)
, Amount = [CheckSum]
FROM @temp
WHERE Canceled = 'N'
) abc
PIVOT
(
SUM(Amount)
FOR [month] IN (
jan, feb, mar,
apr, may, jun,
jul, aug, sep,
oct, nov, [dec])
) sumpivot
的输出:强> 的
VendorCode VendorName year jan feb mar apr may jun jul aug sep oct nov dec
----------- ---------- ------ ------ ----- ----- ----- ----- ------- ----- ----- ----- ------ ------ ------
1 1 2010 4.00 NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL NULL
2 2 2010 NULL NULL 2.00 NULL NULL 100.00 NULL NULL NULL NULL NULL NULL