tblClientとtblDBの2つのテーブルがあります。
CREATE TABLE tblBD(
[ID] INT PRIMARY KEY,
[DataBase] nVARCHAR (30) NOT NULL,
[ClientID] INT NOT NULL,
FOREIGN KEY ([ClientID]) REFERENCES tblClient(ID)
)
CREATE TABLE tblClient(
[ID] INT PRIMARY KEY,
[Name] nVARCHAR(30),
[Status] BIT,
[Number] INT,
)
クライアントごとにすべてのデータベースを取得する方法が必要です。
このようなもの :
Client1 Client2 ClientX
BD1 BD1 BD1
BD2 BD2 BD2
BDX BDX BDX
このスクリプトを実行することで、1つのクライアントに対して簡単に実行できます。
Select tblBD.[DataBase] from tblBD
inner join tblCLient on tblBD.ClientID = tblClient.ID Where tblClient.ID = 1234
しかし、1つのテーブルですべてのクライアントの結果を取得する方法を理解できません。
ピボットの場合、集計関数を使用せずに結果を取得することはできません。
例 :
WITH T
AS (Select tblBD.[DataBase] as BD, tblClient.ID as ClientID from
tblBD inner join tblCLient on tblBD.ClientID = tblClient.ID)
SELECT *
FROM T PIVOT (
max (BD) FOR ClientID IN ([1],[2],[3], [4])
) AS pvt
集計関数を使用せずにすべてのデータベースを取得したい。