带有子查询的SQL Pivot

问题描述 投票:0回答:1

我有一张看起来像这样的桌子

value | effective_date
----------------------
  'A' | '2000-10-31' 
  'A' | '2000-11-30'
  'B' | '2000-10-31'
  'B' | '2000-11-30'
  'C' | '2001-10-31'
  'C' | '2001-12-31'

如何旋转effective_date列以显示每个日期是否存在值?

输出:

value | 2000-10-31 | 2000-11-30 | 2001-10-31 | 2001-12-31
  'A' |      1     |      1     |      0     |     0
  'B' |      1     |      1     |      0     |     0
  'C' |      0     |      0     |      1     |     1

我选择第一个表

SELECT DISTINCT value, effective_date
FROM table
WHERE condition

effective_date

SELECT DISTINCT effective_date
FROM table
ORDER BY effective_date
sql tsql pivot
1个回答
2
投票
CREATE TABLE #Test ([value] char(1), effective_date date)

INSERT INTO #Test ([value], effective_date) VALUES
('A', '2000-10-31'), 
('A', '2000-11-30'),
('B', '2000-10-31'),
('B', '2000-11-30'),
('C', '2001-10-31'),
('C', '2001-12-31')

SELECT *
FROM
(
    SELECT [value] AS 'Display', [value], effective_date FROM #Test
) AS SRC
PIVOT
    (
        COUNT([value])
        FOR effective_date
        IN ([2000-10-31], [2000-11-30], [2001-10-31], [2001-12-31])
    ) AS PVT

DROP TABLE #Test
© www.soinside.com 2019 - 2024. All rights reserved.