说明:
希望统计 A-Z 只要出现在行中的分别的数量是多少
此表的列T1-T4 记录着A-Z,位置都是随机的,但肯定都分布在T1-T4列中,可能也没有,那就是NULL,求分别统计A-Z分别出现了多少次就行,求大神围观,给点建设性意见,效率结贴。以下是脚本:CREATE TABLE TestCount
(
TCID INT IDENTITY PRIMARY KEY,
TNAME VARCHAR(20),
TC1 VARCHAR(20),
TC2 VARCHAR(20),
TC3 VARCHAR(20),
TC4 VARCHAR(20)
)INSERT INTO TestCount
SELECT '香蕉','A','B','C','D'
UNION ALL
SELECT '苹果','A',NULL,NULL,NULL
UNION ALL
SELECT '大鸭梨',NULL,'B','C','D'
UNION ALL
SELECT '葡萄','A','A','B','D'
UNION ALL
SELECT '桔子','Z','X','A','D'
UNION ALL
SELECT '橙子','H','J','E','F'
TCID TNAME TC1 TC2 TC3 TC4
1 香蕉 A B C D
2 苹果 A NULL NULL NULL
3 大鸭梨 NULL B C D
4 葡萄 A A B D
5 桔子 Z X A D
6 橙子 H J E F
希望统计 A-Z 只要出现在行中的分别的数量是多少
此表的列T1-T4 记录着A-Z,位置都是随机的,但肯定都分布在T1-T4列中,可能也没有,那就是NULL,求分别统计A-Z分别出现了多少次就行,求大神围观,给点建设性意见,效率结贴。以下是脚本:CREATE TABLE TestCount
(
TCID INT IDENTITY PRIMARY KEY,
TNAME VARCHAR(20),
TC1 VARCHAR(20),
TC2 VARCHAR(20),
TC3 VARCHAR(20),
TC4 VARCHAR(20)
)INSERT INTO TestCount
SELECT '香蕉','A','B','C','D'
UNION ALL
SELECT '苹果','A',NULL,NULL,NULL
UNION ALL
SELECT '大鸭梨',NULL,'B','C','D'
UNION ALL
SELECT '葡萄','A','A','B','D'
UNION ALL
SELECT '桔子','Z','X','A','D'
UNION ALL
SELECT '橙子','H','J','E','F'
TCID TNAME TC1 TC2 TC3 TC4
1 香蕉 A B C D
2 苹果 A NULL NULL NULL
3 大鸭梨 NULL B C D
4 葡萄 A A B D
5 桔子 Z X A D
6 橙子 H J E F
FROM (
SELECT T1 AS T FROM TestCount WHERE T1 IS NOT NULL
UNION ALL
SELECT T2 AS T FROM TestCount WHERE T2 IS NOT NULL
UNION ALL
SELECT T3 AS T FROM TestCount WHERE T3 IS NOT NULL
UNION ALL
SELECT T4 AS T FROM TestCount WHERE T4 IS NOT NULL
) AS T
GROUP BY T