簡體   English   中英

根據另一個表中的列名從一個表中選擇列

[英]Select columns from a table based on the column names from another table

我想從Jasper報表的下表中選擇數據。

AA_COLUMN_NAMES
在此處輸入圖片說明

AA_PAYMENT_DETAILS
在此處輸入圖片說明

DDL + DML

CREATE TABLE SLPAYROLL_LIVE.dbo.AA_COLUMN_NAMES(
    id int PRIMARY KEY NOT NULL,
    name varchar(500) NOT NULL,
    active bit
);
INSERT INTO SLPAYROLL_LIVE.dbo.AA_COLUMN_NAMES (id, name, active) VALUES (1, 'col_1', 1);
INSERT INTO SLPAYROLL_LIVE.dbo.AA_COLUMN_NAMES (id, name, active) VALUES (2, 'col_2', 1);
INSERT INTO SLPAYROLL_LIVE.dbo.AA_COLUMN_NAMES (id, name, active) VALUES (3, 'col_3', 1);
INSERT INTO SLPAYROLL_LIVE.dbo.AA_COLUMN_NAMES (id, name, active) VALUES (4, 'col_4', 0);
CREATE TABLE SLPAYROLL_LIVE.dbo.AA_PAYMENT_DETAILS(
    id int PRIMARY KEY NOT NULL,
    username varchar(500),
    col_1 varchar(500),
    col_2 varchar(500),
    col_3 varchar(500),
    col_4 varchar(500)
);
INSERT INTO SLPAYROLL_LIVE.dbo.AA_PAYMENT_DETAILS (id, username, col_1, col_2, col_3, col_4) VALUES (1, 'chathura', '500', '200', '300', '0');
INSERT INTO SLPAYROLL_LIVE.dbo.AA_PAYMENT_DETAILS (id, username, col_1, col_2, col_3, col_4) VALUES (2, 'gihan', '300', '100', '100', '0');

我只想從AA_PAYMENT_DETAILS選擇活動列。 活動列的名稱可以從AA_COLUMN_NAMES表中獲取。

我已經搜索了我的問題,並找到了以下解決方案。

根據另一個表的列名從一個表中選擇列

由於我想在Jasper報表中使用該查詢,因此上述解決方案不起作用。 有人知道解決方案嗎?

您必須使用動態SQL來執行此操作-這是一種相當簡單的方法:

DECLARE @SQL nvarchar(4000) = '';

SELECT @SQL = @SQL +', '+ name 
FROM dbo.AA_COLUMN_NAMES
WHERE active = 1

SET @SQL = 'SELECT id, username' + @SQL + ' FROM dbo.AA_PAYMENT_DETAILS'

EXEC(@SQL)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM