SQL Server-使用UNION进行变量赋值
我试图使用UNION ALL分配变量值,但收到错误: 在包含top的语句中不允许变量赋值 标高并集、相交或除运算器 如何使用并集指定值?下面是我试图创建的sql:SQL Server-使用UNION进行变量赋值,sql,sql-server,Sql,Sql Server,我试图使用UNION ALL分配变量值,但收到错误: 在包含top的语句中不允许变量赋值 标高并集、相交或除运算器 如何使用并集指定值?下面是我试图创建的sql: SELECT @Totals = SUM(Quantity) FROM ConsData A WITH(NOLOCK) INNER JOIN #TmpData B ON B.DataId = A.DataId INNER JOIN Data cp ON cp.DataId = A.DataId
SELECT @Totals = SUM(Quantity)
FROM ConsData A WITH(NOLOCK)
INNER JOIN #TmpData B ON B.DataId = A.DataId
INNER JOIN Data cp ON cp.DataId = A.DataId
WHERE A.Status = -1 AND cp.Date IS NOT NULL
UNION ALL
SELECT @Totals = cg.Total
FROM ConsDataGenerated cg
INNER JOIN #TmpData B ON B.DataId = cg.DataId
INNER JOIN Data cp ON cp.DataId = B.DataId
WHERE cp.Date IS NULL
试试这样的
DECLARE @Totals1 INT, @Totals2 INT, @GrandTotal INT;
SELECT @Totals1 = SUM(Quantity)
FROM ConsData A WITH(NOLOCK)
INNER JOIN #TmpData B ON B.DataId = A.DataId
INNER JOIN Data cp ON cp.DataId = A.DataId
WHERE A.Status = -1 AND cp.Date IS NOT NULL
SELECT @Totals2 = cg.Total --<-- Assuming this returns a Scalar value
FROM ConsDataGenerated cg
INNER JOIN #TmpData B ON B.DataId = cg.DataId
INNER JOIN Data cp ON cp.DataId = B.DataId
WHERE cp.Date IS NULL
SELECT @GrandTotal = ISNULL(@Totals1, 0) + ISNULL(@Totals2, 0);
我假设@Totals是一个标量变量,那么你如何给它分配两个不同的值呢?不清楚你期望@Totals有什么值,因为你有两个辅助条件,你考虑过使用集合而不是选择,或者通过将顶级联合包装到另一个select中来删除它?使用两个变量并将它们相加?首先,2个select没有意义。这是逻辑上的胡说八道。其次,我不提供基本的SQL建议——我遵循人们应该阅读文档的思想流派。我告诉过你该怎么做,找出一个select的FROM可以是另一个select——确切的语法——是你的责任。