Sql server 以null为条件的表视图

Sql server 以null为条件的表视图,sql-server,view,Sql Server,View,我有两张桌子,一张放音乐,一张放艺术家。音乐有专辑名、artistID(外键)和发行日期。艺术家有3列,一列用于PKID,一列用于乐队名称,一列用于歌手名称。如果是乐队,将填写乐队名称,歌手名称为空。反之亦然 如果bandname不为null,我似乎无法创建一个表视图来显示Band名称,反之亦然。我尝试过许多不同的方法,包括一种声明变量的方法,但从未编译过。这是我最近试过的一件事。我有点理解出了什么问题,但如果我不能声明@BandName,我不知道该往哪个方向走 CREATE VIEW Musi

我有两张桌子,一张放音乐,一张放艺术家。音乐有专辑名、artistID(外键)和发行日期。艺术家有3列,一列用于PKID,一列用于乐队名称,一列用于歌手名称。如果是乐队,将填写乐队名称,歌手名称为空。反之亦然

如果bandname不为null,我似乎无法创建一个表视图来显示Band名称,反之亦然。我尝试过许多不同的方法,包括一种声明变量的方法,但从未编译过。这是我最近试过的一件事。我有点理解出了什么问题,但如果我不能声明@BandName,我不知道该往哪个方向走

CREATE VIEW MusicWithArtist AS

    IF B.BandName IS NOT NULL
        BEGIN 
         SELECT A.Title, A.ReleaseDate, B.BandName
            FROM Music A, Artist B
                WHERE A.ArtistID = B.ArtistID
        END;
    ELSE
        BEGIN
         SELECT A.Title, A.ReleaseDate, B.SingerName
            FROM Music A, Artist B
                WHERE A.ArtistID = B.ArtistID
        END;
您正在使用什么环境阻止您使用联接??Ansi风格的连接是从SQL92开始指定的,这是多年前的事了,一点也不好笑

CREATE VIEW MusicWithArtist AS
     SELECT A.Title, A.ReleaseDate, ISNULL(B.BandName,B.SingerName) ArtistName
        FROM Music A
        JOIN Artist B ON A.ArtistID = B.ArtistID;

我也不想在这里使用Join命令,因为您正在使用Join。你只是故意使用了一种旧的风格,以至于微软可能很快就会停止支持它。先生,你真是太棒了。你似乎总是看到我的问题,并在30分钟内回答。至于连接部分,我只是想看看它是否可以在没有连接的情况下完成:)这很酷,我也不知道你可以在这里省略As。在所有情况下都可以完全省略AS吗?对于列和表别名的命名,可以省略AS。用于定义视图/功能/过程-这是强制性的。
CREATE VIEW MusicWithArtist AS
     SELECT A.Title, A.ReleaseDate, ISNULL(B.BandName,B.SingerName) ArtistName
        FROM Music A
        JOIN Artist B ON A.ArtistID = B.ArtistID;