我正在使用MSQL 2005.我有2个table.A和B
- ID DOVKOD
- 1 KURSATIS
- ID KURALIS KURSATIS
- 1 2,2522 2,2685
- 2 2,4758 2,4874
表A只有1条记录
当我执行Select (Select DOVKOD from Table A) from Table B
时,我想获得与Select KURSATIS from Table B
我将在视图中使用它。我怎样才能做到这一点。感谢..
答案 0 :(得分:1)
您只需使用CASE
表达式:
SELECT CASE WHEN (SELECT DOVKOD FROM A) = 'KURSATIS' THEN KURSATIS
ELSE KURALIS
END
FROM B
答案 1 :(得分:0)
在MySQL中如何做到这一点的唯一方法是使用Prepared语句。 Dynamic pivot tables (transform rows to columns)是关于此的好文章。
SET @sql = NULL;
Select DOVKOD INTO @sql
FROM from Table A;
SET @sql = CONCAT('SELECT ', @sql, 'FROM Table B');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
答案 2 :(得分:0)
您必须使用Dynamic TSQL
SELECT @column=DOVKOD from Table A
EXEC ('Select ' + @column + ' from Table B')
答案 3 :(得分:0)
如果我理解你,那么在表A中你有你想要返回的列的名称。然后你的解决方案很糟糕。我宁愿做那样的事情:
CREATE TABLE #TableA
(
ID INT, DOVKOD VARCHAR(100)
);
INSERT INTO #TableA VALUES (1, 'KURSATIS');
CREATE TABLE #TableB
(
ID INT, Value DECIMAL (18,2),Name VARCHAR(100)
);
INSERT INTO #TableB VALUES (1, 2.2522 , 'KURALIS');
INSERT INTO #TableB VALUES (2, 2.4758 , 'KURSATIS');
SELECT #TableB.* FROM #TableB JOIN #TableA ON #TableA.DOVKOD = #TableB.Name