我有这张桌子
╔═════════╦═══════╦═══════════════════╗
║ COMPANY ║ NAME ║ DATE ║
╠═════════╬═══════╬═══════════════════╣
║ A ║ Roger ║ 4/17/2015 0:00:00 ║
║ B ║ Larry ║ 4/9/2015 0:00:00 ║
║ C ║ Paul ║ 4/9/2015 0:00:00 ║
║ D ║ Scott ║ 4/24/2015 0:00:00 ║
╚═════════╩═══════╩═══════════════════╝
我想使表格看起来像
╔═════════╦═══════════════════╦══════════════════╦══════════════════╦═══════════════════╗
║ COMPANY ║ Roger ║ Larry ║ Paul ║ Scott ║
╠═════════╬═══════════════════╬══════════════════╬══════════════════╬═══════════════════╣
║ A ║ 4/17/2015 0:00:00 ║ - ║ - ║ - ║
║ B ║ - ║ 4/9/2015 0:00:00 ║ - ║ - ║
║ C ║ - ║ - ║ 4/9/2015 0:00:00 ║ - ║
║ D ║ - ║ - ║ - ║ 4/24/2015 0:00:00 ║
╚═════════╩═══════════════════╩══════════════════╩══════════════════╩═══════════════════╝
所以我尝试了这个,但它没有插入日期,任何想法?
SELECT DISTINCT
(company),
[Roger] = (CASE WHEN [str_lastname] = 'Roger' THEN 'date' ELSE '-' END),
[Larry] = (CASE WHEN [str_lastname] = 'Larry' THEN 'date' ELSE '-' END),
[Paul] = (CASE WHEN [str_lastname] = 'Paul' THEN 'date' ELSE '-' END),
[Scott] = (CASE WHEN [str_lastname] = 'Scott' THEN 'date' ELSE '-' END)
FROM
#temp1
它会从列中插入日期而不是实际日期。
感谢任何帮助
答案 0 :(得分:0)
DECLARE @stuff TABLE
(
company CHAR(1) NULL,
NAME VARCHAR(20) NULL,
somedate DATETIME NULL
)
INSERT INTO @stuff
(company,
NAME,
somedate)
VALUES ('A',
'Roger',
'04/17/2015')
INSERT INTO @stuff
(company,
NAME,
somedate)
VALUES ('B',
'Larry',
'04/9/2015')
INSERT INTO @stuff
(company,
NAME,
somedate)
VALUES ('C',
'Paul',
'04/9/2015')
INSERT INTO @stuff
(company,
NAME,
somedate)
VALUES ('D',
'Scott',
'04/24/2015')
SELECT DISTINCT ( company ),
[Roger] = ( CASE
WHEN[name] = 'Roger' THEN Cast(
[somedate] AS VARCHAR)
ELSE '-'
END ),
[Larry] = ( CASE
WHEN[name] = 'Larry' THEN Cast(
[somedate] AS VARCHAR)
ELSE '-'
END ),
[Paul] = ( CASE
WHEN[name] = 'Paul' THEN Cast([somedate] AS VARCHAR
)
ELSE '-'
END ),
[Scott] = ( CASE
WHEN[name] = 'Scott' THEN Cast(
[somedate] AS VARCHAR)
ELSE '-'
END )
FROM @stuff
答案 1 :(得分:0)
SELECT
COMPANY,
MAX(CASE
WHEN NAME = 'Roger' THEN CONVERT(varchar, [DATE])
ELSE '-'
END) Roger,
MAX(CASE
WHEN NAME = 'Larry' THEN CONVERT(varchar, [DATE])
ELSE '-'
END) Larry,
MAX(CASE
WHEN NAME = 'Paul' THEN CONVERT(varchar, [DATE])
ELSE '-'
END) Paul,
MAX(CASE
WHEN NAME = 'Scott' THEN CONVERT(varchar, [DATE])
ELSE '-'
END) Scott
FROM
SourceTable
GROUP BY
COMPANY;
或者只是更改' date'你所拥有的CONVERT(varchar,[DATE])。由于每个名称仅与一个公司相关,因此您实际上并不需要我所展示的GROUP。这只是我用于转动'的标准技术。这样的数据。