【发布时间】:2019-01-31 00:46:34
【问题描述】:
我的查询中有一个选择列表,如下所示:
SELECT
COUNT(*) OVER () AS TotalRowsFound,
MIN(t.Title) AS Title,
t.ItemID, ' + @selectedColumn + ' as SelectedColumnSales ' + ',
t.CurrentPrice,
(t.CurrentPrice * t.SelectedColumnSales) as TotalRevenuePerItem
FROM
dbo.SearchedUserItems t
我遇到问题的查询部分如下:
(t.CurrentPrice * t.SelectedColumnSales) as TotalRevenuePerItem
在选择列表中...“SelectedColumnSales”可以是不同的列,具体取决于我传递给查询的内容,如下所示:
DECLARE @selectedColumn NVARCHAR(500)
IF(@SelectedRange=7)
SET @selectedColumn = 't.SevenDaySales'
ELSE IF (@SelectedRange=14)
SET @selectedColumn='t.FourteenDaySales'
ELSE IF (@SelectedRange=21)
SET @selectedColumn='t.TwentyOneDaySales'
ELSE IF (@SelectedRange=30)
SET @selectedColumn='t.ThirtyDaySales'
现在要获得每个项目列的收入,我需要像上面那样将这两个相乘,但是查询会抛出这个错误:
内部异常:SqlException:列名“SelectedColumnSales”无效。
如何在选择列表中将动态列与静态列相乘?
谁能帮帮我?
【问题讨论】:
-
将您的查询包装在一个派生表中,然后您可以引用它之外的那些列。
标签: sql sql-server sql-server-2008 select multiplication