如何在使用数据检索功能的SQL中保存数据?

时间:2014-09-01 12:20:45

标签: sql sql-server-2008 data-retrieval

我正在从表中检索值,而这反过来又使用SQL关键字'EXCEPT'

与另一个表中的值进行比较

我的查询类似于以下

SELECT DISTINCT TDC_TREE_FAMILY_CLASSIFICATION AS DPC_Level1,
                TDC_TREE_CLASSIFICATION AS DPC_Level2,
                TDC_TREE_SUB_CLASSIFICATION AS DPC_Level3 
                FROM TD_DATA_PACK_CONTENTS
                EXCEPT
SELECT  DPC_Level1,DPC_Level2,DPC_Level3 FROM DATA_PACK_CATEGORIES
ORDER BY DPC_Level1

现在这个查询工作正常。我想要做的是将结果保存在单个字符串变量中。

所以我声明3个临时变量来保存DPC_Level1,Lvl2,Lvl3的值,然后我可以将它们连接成一个字符串变量。

所以我像这样修改我的查询。

SELECT DISTINCT @m_DPC_Level11=TDC_TREE_FAMILY_CLASSIFICATION AS DPC_Level1
               ,@m_DPC_Level2=TDC_TREE_CLASSIFICATION AS DPC_Level2,
               ,@m_DPC_Level13=TDC_TREE_SUB_CLASSIFICATION AS DPC_Level3 
                FROM TD_DATA_PACK_CONTENTS
                EXCEPT
SELECT  DPC_Level1,DPC_Level2,DPC_Level3 FROM DATA_PACK_CATEGORIES
ORDER BY DPC_Level1

但这会引发错误

  

'为变量赋值的SELECT语句不能是   结合数据检索操作

。我如何解决这个问题。我正在使用SQL Server 2008

1 个答案:

答案 0 :(得分:1)

我会选择子查询

select @m_DPC_LEvel11 = DPC_Level1,
       @m_DPC_Level2  = DPC_Level2,
       @m_DPC_Level13 = DPC_Level3,
FROM
    (SELECT DISTINCT TDC_TREE_FAMILY_CLASSIFICATION AS DPC_Level1,
                TDC_TREE_CLASSIFICATION AS DPC_Level2,
                TDC_TREE_SUB_CLASSIFICATION AS DPC_Level3 
                FROM TD_DATA_PACK_CONTENTS
                EXCEPT
    SELECT  DPC_Level1,DPC_Level2,DPC_Level3 FROM DATA_PACK_CATEGORIES
    ORDER BY DPC_Level1) s