0

我找不到我试图在存储过程上使用的 SELECT 语句有什么问题:

SELECT TOP 1 @TARIF = t.rea_est_tax_cla_ali_area, 
             @CHARACTERISTIC = t.rea_est_cha_id, 
             @USE = t.rea_est_use_id, 
             @TYPE = t.typ_rea_est_id, 
             ( ( CASE 
                   WHEN t.rea_est_tax_cla_ali_area IS NULL THEN 1 
                   ELSE 0 
                 END ) + ( CASE 
                             WHEN t.rea_est_cha_id IS NULL THEN 1 
                             ELSE 0 
                           END ) + ( CASE 
                                       WHEN t.rea_est_use_id IS NULL THEN 1 
                                       ELSE 0 
                                     END ) + ( CASE 
                                                 WHEN t.typ_rea_est_id IS NULL 
                                               THEN 1 
                                                 ELSE 0 
                                               END ) ) AS NULLCOLUMNCOUNT 
FROM   dbo.tbl_real_estate_tax_classifier 

感谢任何帮助,由于工作规定,我无法提交整个程序,但问题似乎存在。

4

2 回答 2

5

为了便于阅读,我用换行符重新格式化了您的代码。

SELECT TOP 1
    @TARIF = T.REA_EST_TAX_CLA_ALI_AREA, 
    @CHARACTERISTIC = T.REA_EST_CHA_ID, 
    @USE     = T.REA_EST_USE_ID, 
    @TYPE = T.TYP_REA_EST_ID,
    ((CASE WHEN T.REA_EST_TAX_CLA_ALI_AREA IS NULL THEN 1 ELSE 0 END)+(CASE WHEN T.REA_EST_CHA_ID IS NULL THEN 1 ELSE 0 END)
    +(CASE WHEN T.REA_EST_USE_ID IS NULL THEN 1 ELSE 0 END)+(CASE WHEN T.TYP_REA_EST_ID IS NULL THEN 1 ELSE 0 END)) AS NULLCOLUMNCOUNT 
FROM dbo.TBL_REAL_ESTATE_TAX_CLASSIFIER 

希望你现在看到问题。NULLCOLUMNCOUNT 是你的罪魁祸首。

你的意思是写这个吗?

SELECT TOP 1 
    @TARIF = T.REA_EST_TAX_CLA_ALI_AREA, 
    @CHARACTERISTIC = T.REA_EST_CHA_ID, 
    @USE     = T.REA_EST_USE_ID, 
    @TYPE = T.TYP_REA_EST_ID,
    @NULLCOLUMNCOUNT =    ((CASE WHEN T.REA_EST_TAX_CLA_ALI_AREA IS NULL THEN 1 ELSE 0 END)+(CASE WHEN T.REA_EST_CHA_ID IS NULL THEN 1 ELSE 0 END)
    +(CASE WHEN T.REA_EST_USE_ID IS NULL THEN 1 ELSE 0 END)+(CASE WHEN T.TYP_REA_EST_ID IS NULL THEN 1 ELSE 0 END)) 
FROM dbo.TBL_REAL_ESTATE_TAX_CLASSIFIER 
于 2013-10-01T22:20:52.803 回答
3

错误似乎很明显 - 您正在使用部分选择将值分配给变量,部分作为列返回。

也许你想要这样的东西?

SELECT TOP 1 
    @TARIF = T.REA_EST_TAX_CLA_ALI_AREA, 
    @CHARACTERISTIC = T.REA_EST_CHA_ID, 
    @USE     = T.REA_EST_USE_ID, 
    @TYPE = T.TYP_REA_EST_ID,
    @NULLCOLUMNCOUNT = ((CASE WHEN T.REA_EST_TAX_CLA_ALI_AREA IS NULL THEN 1 ELSE 0 END)
                       +(CASE WHEN T.REA_EST_CHA_ID IS NULL THEN 1 ELSE 0 END)
                       +(CASE WHEN T.REA_EST_USE_ID IS NULL THEN 1 ELSE 0 END)
                       +(CASE WHEN T.TYP_REA_EST_ID IS NULL THEN 1 ELSE 0 END))
    FROM dbo.TBL_REAL_ESTATE_TAX_CLASSIFIER 
于 2013-10-01T22:22:09.940 回答