我有一张类似于此的表:(第一行是标题)
ID --peach --cherry --plum --berry --apple --mango --orange --grapes
932 --peach --NULL --NULL - NULL --NULL --NULL --NULL --NULL
932 --NULL --NULL --NULL --berry - NULL - mango --NULL --NULL
932 --NULL --NULL - NULL - 浆果--NULL - mango --NULL --NULL
926 --NULL --cherry --NULL - NULL --apple --NULL --NULL --NULL
926 --NULL --cherry --NULL - NULL --apple --ULL --NULL --NULL --grapes
我正在尝试创建一个函数来获取ID并从每个其他列中选择初始值(如果存在),然后将它们连接起来,如下所示
ID水果
932 P
932 B,M
932 B,M
932 C,A
932 C,A,G
最好这样做并创建一个函数,我可以稍后调用它来创建一个最终表。任何帮助表示赞赏。该表有大约51,000行。
答案 0 :(得分:1)
这应该这样做:
示例数据:
CREATE TABLE #temp1(ID INT
, peach VARCHAR(10)
, cherry VARCHAR(10)
, plum VARCHAR(10)
, berry VARCHAR(10)
, apple VARCHAR(10)
, mango VARCHAR(10)
, orange VARCHAR(10)
, grapes VARCHAR(10));
INSERT INTO #temp1
VALUES
(932,'peach' , NULL , NULL , NULL , NULL , NULL , NULL, NULL ),
(932,NULL , NULL ,NULL ,'berry' , NULL ,'mango' ,NULL ,NULL ),
(932,NULL , NULL ,NULL ,'berry' , NULL ,'mango' ,NULL ,NULL ),
(926,NULL , 'cherry' ,NULL ,NULL , 'apple' ,NULL ,NULL ,NULL ),
(926,NULL , 'cherry' ,NULL ,NULL , 'apple' ,NULL ,NULL ,'grapes')
QUERY:
SELECT #temp1.ID
, ISNULL(SUBSTRING(#temp1.peach,1,1),'')
+ ISNULL(SUBSTRING(#temp1.cherry,1,1),'')
+ ISNULL(SUBSTRING(#temp1.plum,1,1),'')
+ ISNULL(SUBSTRING(#temp1.berry,1,1),'')
+ ISNULL(SUBSTRING(#temp1.apple,1,1),'')
+ ISNULL(SUBSTRING(#temp1.mango,1,1),'')
+ ISNULL(SUBSTRING(#temp1.orange,1,1),'')
+ ISNULL(SUBSTRING(#temp1.grapes,1,1),'')
FROM #temp1;
结果: