당신은 동적 쿼리를 작성해야 할 동적 SQL을 다른 방법이 필요하지
DECLARE @COLUMNS VARCHAR(MAX)='', @QRY VARCHAR(MAX);
SELECT @COLUMNS = @COLUMNS +COLUMN_NAME +',' FROM
INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME='Products'
SELECT @COLUMNS =SUBSTRING (@COLUMNS,1 ,LEN(@COLUMNS)-1)
SELECT @QRY ='SELECT '[email protected] + ' FROM Products WHERE UserId = 3 AND ProductId = 1'
EXEC (@QRY)
편집 : 당신의 댓글에서 & 편집 질문
스키마 I 귀하의 질문에서 가정합니다.
CREATE TABLE Products (
ProductId INT,
Name VARCHAR(250),
Price DECIMAL(18,2),
DateS DATETIME,
UserId INT)
INSERT INTO Products
SELECT 1,'Oil Product', 2000, GETDATE(), 3
UNION ALL
SELECT 2,'Amway', 600, GETDATE(), 2
UNION ALL
SELECT 3,'Thermal', 5000, GETDATE(), 1
UNION ALL
SELECT 4,'Oil Product', 500, GETDATE(), 4
CREATE TABLE ProductsCustomColumns
(
ProductId INT ,
ColumnName VARCHAR(200),
ColumnValue VARCHAR(15))
INSERT INTO ProductsCustomColumns
SELECT 1, 'Licence_No', '1545'
UNION ALL
SELECT 1, 'Location ', 'Atlanta'
UNION ALL
SELECT 2, 'Qty ', '5'
UNION ALL
SELECT 3, 'Gross', '80000'
이제 동적 코드는 여기
DECLARE @COLUMN_PCC VARCHAR(MAX)='', @PRODUCT_ID INT=1,@USER_ID INT=3, @QRY VARCHAR(MAX) ;
--preparing Custom Column Name List with comma ','
SELECT @COLUMN_PCC = @COLUMN_PCC+ [COLUMNNAME] +',' FROM ProductsCustomColumns
WHERE ProductId= @PRODUCT_ID
SELECT @COLUMN_PCC =SUBSTRING(@COLUMN_PCC,1,LEN(@COLUMN_PCC)-1)
--Preparing Dynamic Query
SELECT @QRY =' SELECT P.*, AV.* FROM Products P
INNER JOIN
(
SELECT * FROM (
SELECT * FROM ProductsCustomColumns WHERE ProductId= '+CAST(@PRODUCT_ID AS VARCHAR(50))+'
)
AS A
PIVOT
(
MAX (COLUMNVALUE)
FOR [COLUMNNAME] IN ('[email protected]_PCC +')
)AS PVT
)AS AV ON P.ProductId= AV.ProductId
AND P.UserId='++CAST(@USER_ID AS VARCHAR(50))+'
'
EXEC (@QRY)
간다 그리고 결과는 기본 테이블의 추가 열에서 사용자 정의 데이터를 추가하는 아주 나쁜 생각입니다 일반적으로
+-----------+-------------+---------+-------------------------+--------+-----------+------------+----------+
| ProductId | Name | Price | DateS | UserId | ProductId | Licence_No | Location |
+-----------+-------------+---------+-------------------------+--------+-----------+------------+----------+
| 1 | Oil Product | 2000.00 | 2016-12-09 18:06:24.090 | 3 | 1 | 1545 | Atlanta |
+-----------+-------------+---------+-------------------------+--------+-----------+------------+----------+
ProductsCustomColumns는 별도의 테이블입니까? –
예, 별도의 테이블. –