我有桌子,它的值是
code Number name
111 a2 'abc'
112 b7 'abc1'
113 a3 'abc2'
113 c5 'abc2'
114 d1 'abc4'
115 s6 'abc3'
116 s9 'a4'
116 s9 'a5'
我想输出我的值是
code Number1 number2 name
111 a2 Null 'abc'
112 b7 Null 'abc1'
113 a3 C5 'abc2'
114 d1 Null 'abc4'
115 s6 Null 'abc3'
116 s9 'a4' 'a5'
如何从sql Query
中实现答案 0 :(得分:0)
我对你的输出感到困惑。 在我看来,代码= 113的行的'number2'列的值来自'Number'列。 而对于包含代码116的行,列'number2'来自'name'列。
我已经开始编写SQL来帮助:
DECLARE @temp table (code INT, Number char(2), Name char(4));
INSERT INTO @temp (code,Number, Name) VALUES (111, 'a2', 'abc')
INSERT INTO @temp (code,Number, Name) VALUES (112, 'b7', 'abc1')
INSERT INTO @temp (code,Number, Name) VALUES (113, 'a3', 'abc2')
INSERT INTO @temp (code,Number, Name) VALUES (113, 'c5', 'abc2')
INSERT INTO @temp (code,Number, Name) VALUES (114, 'd1', 'abc4')
INSERT INTO @temp (code,Number, Name) VALUES (115, 's6', 'abc3')
INSERT INTO @temp (code,Number, Name) VALUES (116, 's9', 'a4')
INSERT INTO @temp (code,Number, Name) VALUES (116, 's9', 'a5')
SELECT T1.code, T1.Number, T2.Number, T1.Name
FROM @temp T1
LEFT JOIN @temp T2 ON T1.code = T2.code AND T1.Number=T2.Number AND T1.Name <> T2.Name
WHERE T1.Number = (SELECT MIN(Number) FROM @temp T3 WHERE T3.code = T1.code)
AND T1.Name = (SELECT MIN(Name) FROM @temp T4 WHERE T4.code = T1.code);
除了代码为113的行外,哪个输出正常... 你确定你想要的输出???
此致 中号