如何在sql中使用while循环来子集和打印表?

goqiplq2  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(189)
DECLARE @DATA_COL INT = 1
DECLARE @DATA_New INT
DECLARE @Total_COLUMN INT
DECLARE @Trial NVARCHAR(10)
DECLARE @Column INT
DECLARE @plot INT
DECLARE @trt INT
DECLARE @rep INT
DECLARE @block INT
DECLARE @data INT

SET @Total_COLUMN = (SELECT COUNT(DISTINCT (DATA_COLUMN)) FROM FINAL_DATA 
                     WHERE FINAL_DATA.TRIAL_ID='AU_1')
SET @DATA_COL = 1

WHILE @DATA_COL <= @Total_COLUMN
BEGIN 
    PRINT (SELECT 
               @Trial = TRIAL_ID, @Column=DATA_COLUMN, @plot = PLOT_NO, 
               @trt = TRT_NO, @rep = REP_NO, @block = BLOCK_NO, @data = DATA 
           FROM 
               FINAL_DATA 
           WHERE 
               FINAL_DATA.TRIAL_ID = 'AU_1' AND DATA_COLUMN = @DATA_COL)

    SET @DATA_COL = @DATA_COL + 1
END

我正在尝试用distinct data\u列值对表进行子集划分。我无法打印查询。
我得到这个错误:
在此上下文中不允许子查询。只允许使用标量表达式
如果有人能帮我解决这个问题,我将不胜感激。
我也尝试过另一种方法。

select
    TRIAL_ID, DATA_COLUMN, PLOT_NO, TRT_NO, REP_NO, BLOCK_NO,DATA
from
    FINAL_DATA
group by
    DATA_COLUMN, TRIAL_ID

运行此代码时,出现以下错误:
“final\u data.plot\u no”列在选择列表中无效,因为它既不包含在聚合函数中,也不包含在group by子句中。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题